Il existe de la doc en ligne concernant l'objet proxy dont tu parles ?
Le 18 novembre 2011 13:23, Dsls <dsls(a)morefnu.org> a écrit :
Hello,
Gros sujet de réflexion sur les classes core de dotclear, et de leur
utilisation actuelle.
J'ai volontairement isolé certaines méthodes des classes dcBlog et
dcCore (voir en annexe).
Pour moi, les fonctions en question ne devraient pas être
disponibles/accessibles coté public du blog.
Il pourrait être intéressant d'avoir une instanciation différente
selon qu'on est coté
public ou coté admin du blog : coté public, on ouvre un sous-ensemble
de fonctionnalités
(des objets core et blog bridés en quelque sorte), et coté admin on
donne les objets complets.
Cela peut être mis en oeuvre de plusieurs façons. Exemple pour dcBlog :
* Un objet dcBlog épuré implémenté coté public, dont hérite un objet
dcBlogAdmin plus complet
* Un objet dcBlog complet coté admin, dont hérite un objet
dcBlogPublic qui surcharge les fonctions interdites
* Un objet dcBlog complet coté admin, et un objet "proxy" (au sens
design pattern du terme) utilisé en guise de
dcBlog coté public, le proxy contrôlant ce qui est appelable ou pas.
L'avantage du 3e cas est qu'on peut mettre les behaviors qu'on veut
avant et/ou après l'appel à des fonctions core et/ou blog.
Je conçois qu'aujourd'hui c'est assez abstrait et peut paraître
inutile, dans la mesure on on n'a pas vraiment besoin
de cette protection dans la gestion actuelle du moteur de template,
mais si on réfléchit un peu plus loin avec un nouveau moteur
de templates (twig pour ne citer que lui), offrir un objet dcBlog
"protégé" dans le contexte du template permettrait une grande
simplification de l'écriture de templates, et surtout une certaine
sécurisation à ce niveau.
A+,
Bruno
== Annexe ==
dcBlog :
public function __construct($core, $id)
public function addCategory($cur,$parent=0)
public function addComment($cur)
public function addPost($cur)
public function categories()
public function delCategory($id)
public function delComment($id)
public function delPost($id)
public function resetCategoriesOrder()
public function setCategoryParent($id,$parent)
public function setCategoryPosition($id,$sibling,$move)
public function
setPostContent($post_id,$format,$lang,&$excerpt,&$excerpt_xhtml,&$content,&$content_xhtml)
public function updComment($id,$cur)
public function updCommentStatus($id,$status)
public function updPost($id,$cur)
public function updPostCategory($id,$cat_id)
public function updPostSelected($id,$selected)
public function updPostStatus($id,$status)
dcCore :
public function __construct($driver, $host, $db, $user, $password,
$prefix, $persist)
public function addBlog($cur)
public function addFormater($name,$func)
public function addUser($cur)
public function checkNonce($secret)
public function countAllComments()
public function countBlogPosts($id,$type=null)
public function emptyTemplatesCache()
public function indexAllComments($start=null,$limit=null)
public function indexAllPosts($start=null,$limit=null)
public function initWikiComment()
public function initWikiPost()
public function initWikiSimpleComment()
public function setBlog($id)
public function setUserBlogPermissions($id, $blog_id, $perms,
$delete_first=true)
public function setUserDefaultBlog($id, $blog_id)
public function setUserPermissions($id,$perms)
public function setVersion($module,$version)
public function unsetBlog()
public function updBlog($id,$cur)
public function updUser($id,$cur)
public function userDefaults()
public function wikiPostLink($url,$content)
_______________________________________________
Dev mailing list
Dev(a)list.dotclear.org
http://ml.dotclear.org/listinfo/dev