{"id":343,"date":"2010-08-23T00:00:55","date_gmt":"2010-08-22T22:00:55","guid":{"rendered":"http:\/\/grummfy.be\/blog\/?p=343"},"modified":"2010-08-23T00:00:55","modified_gmt":"2010-08-22T22:00:55","slug":"zf-module-et-autoloader","status":"publish","type":"post","link":"https:\/\/grummfy.be\/blog\/343","title":{"rendered":"ZF : module et autoloader"},"content":{"rendered":"<p>Avec Zend Framework, lorsque l&rsquo;on travail un projet cons\u00e9quent il devient vite utile de travailler avec le m\u00e9canisme des <a href=\"http:\/\/framework.zend.com\/manual\/fr\/zend.controller.modular.html\" target=\"_blank\">modules<\/a>. Celui-ci permet d&rsquo;\u00e9tendre pas mal de chose et surtout une s\u00e9paration pouss\u00e9e en &#8230; module.<\/p>\n<p>Le probl\u00e8me de ce m\u00e9canisme<sup class='footnote'><a href='#fn-343-1' id='fnref-343-1' onclick='return fdfootnote_show(343)'>1<\/a><\/sup> est qu&rsquo;il faut d\u00e9finir le chemin pour le chargement automatique \u00e0 l&rsquo;aide de ceci :<\/p>\n<pre lang=\"php\">\r\n$autoloader = new Zend_Application_Module_Autoloader(array(\r\n\t'namespace' =&gt; 'SuperModule',\r\n\t'basePath'\u00a0 =&gt; 'path to super module',\r\n));\r\n<\/pre>\n<p>Je vous propose donc de faire une petite am\u00e9lioration afin que ce chargement soit fait automatiquement.<\/p>\n<p>Avant tout, dans votre configuration (ici en .ini) vous devez au moins avoir ceci de pr\u00e9sent :<\/p>\n<pre lang=\"ini\">\r\nresources.frontController.moduleDirectory = APPLICATION_PATH \"\/modules\"\r\nresources.modules =\r\n<\/pre>\n<p>Ensuite, \u00e0 la base de chaque dossier module cr\u00e9er un fichier Bootstrap.php<sup class='footnote'><a href='#fn-343-2' id='fnref-343-2' onclick='return fdfootnote_show(343)'>2<\/a><\/sup> :<\/p>\n<pre lang=\"php\">\r\n&lt;?php\r\nclass SuperModule_Bootstrap extends Grummfy_Bootstrap{}\r\n# EOF\r\n<\/pre>\n<p>Et pour finir cr\u00e9er le fichier<sup class='footnote'><a href='#fn-343-3' id='fnref-343-3' onclick='return fdfootnote_show(343)'>3<\/a><\/sup> library\/Grummfy\/Bootstrap.php<\/p>\n<pre lang=\"php\">\r\n&lt;?php\r\n\r\nabstract class Grummfy_Bootstrap extends Zend_Application_Bootstrap_Bootstrap\r\n{\r\n\tprotected function _initAutoload()\r\n\t{\r\n\t\t$className = get_class($this);\r\n\t\t$zf_namespace = explode('_', $className);\r\n\t\t$reflector = new ReflectionClass($className);\r\n\t\t$autoloader = new Zend_Application_Module_Autoloader(array(\r\n\t\t\t'namespace' =&gt; $zf_namespace[0],\r\n\t\t\t'basePath'\u00a0 =&gt; dirname($reflector-&gt;getFileName()),\r\n\t\t));\r\n\t\treturn $autoloader;\r\n\t}\r\n}\r\n\r\n# EOF\r\n<\/pre>\n<div class='footnotes' id='footnotes-343'>\n<div class='footnotedivider'><\/div>\n<ol>\n<li id='fn-343-1'> sauf si j&rsquo;ai loup\u00e9 un truc&#8230; <span class='footnotereverse'><a href='#fnref-343-1'>&#8617;<\/a><\/span><\/li>\n<li id='fn-343-2'> ne pas oublier de changer le nom du module &#8230; <span class='footnotereverse'><a href='#fnref-343-2'>&#8617;<\/a><\/span><\/li>\n<li id='fn-343-3'> n&rsquo;oubliez pas de d\u00e9clarer le \u00ab\u00a0namespace\u00a0\u00bb Grummfy ou bien d&rsquo;inclure le fichier <span class='footnotereverse'><a href='#fnref-343-3'>&#8617;<\/a><\/span><\/li>\n<\/ol>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Avec Zend Framework, lorsque l&rsquo;on travail un projet cons\u00e9quent il devient vite utile de travailler avec le m\u00e9canisme des modules. Celui-ci permet d&rsquo;\u00e9tendre pas mal de chose et surtout une s\u00e9paration pouss\u00e9e en &#8230; module. Le probl\u00e8me de ce m\u00e9canisme1 est qu&rsquo;il faut d\u00e9finir le chemin pour le chargement automatique \u00e0 l&rsquo;aide de ceci : [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[9],"tags":[110,24,28,64],"class_list":["post-343","post","type-post","status-publish","format-standard","hentry","category-dev","tag-php","tag-programmation","tag-trucs-et-astuces","tag-zf"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/comments?post=343"}],"version-history":[{"count":4,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/343\/revisions"}],"predecessor-version":[{"id":347,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/343\/revisions\/347"}],"wp:attachment":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/media?parent=343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/categories?post=343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/tags?post=343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}