J'ai trouvé ça : http://www.zeitoun.net/articles/proxyfier-un-objet-php/start
Le 18 novembre 2011 13:53, Franck Paul <[email protected]> a écrit : > Il existe de la doc en ligne concernant l'objet proxy dont tu parles ? > > Le 18 novembre 2011 13:23, Dsls <[email protected]> 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 >> [email protected] >> http://ml.dotclear.org/listinfo/dev >> > _______________________________________________ Dev mailing list [email protected] http://ml.dotclear.org/listinfo/dev
