2014-10-06 3 views
0

У меня есть приложение ZF2, где у корневого уровня есть папка моего поставщика. (классическое скелетное приложение) В вендоре содержатся все библиотеки, которые я обновляю и устанавливаю с помощью композитора.psr 4 - zf2 load custom class

Под продавцами необходимо добавить пользовательские классы и автозагрузить его.

Используйте композитор и написать autolader как этот

"autoload": { 
    "psr-4": { 
    "ciromar\\": "/vendor/ciromar/src" 
} 

теперь структура папок выглядит следующим образом:

vendor 
--ciromar 
---- src 
------ Log 
-------- Writer 
---------- FileRotator.php (class) 

пространство имен класса FileRotator.php

namespace ciromar\Log\Writer; 

контроллер моих приложений

use ciromar\Log\Writer\FileRotator; 

IndexController class extends AbstractActionController 
{ 
    public function indexAction() 
    { 

     $fr = new FileRotator(""); 
    } 
} 

ошибка

Fatal error: Class 'ciromar\Log\Writer\FileRotator' not found in /var/www/html/myapp/module/Application/src/Application/Controller/IndexController.php on line 21 
+0

ок я решил. Мне нужно установить путь таким образом './vendor/ciromar/src' – ciro

ответ

0

Вы должны установить путь таким образом

"autoload": { 
    "psr-4": { 
    "ciromar\\": "./vendor/ciromar/src" 
} 

Но я думаю, что вы не должны поместить ваш пользовательский модуль поставщику руками. Вы должны разработать его как модуль, затем добавить собственный модуль composer.json, затем добавить модуль в packagist и потребовать, чтобы ваш модуль в вашем проекте composer.json и composer загрузил его поставщику/автоматически.

Если вы хотите реализовать PSR-4 загрузки для всего приложения модуля, чем поместить его в каталоге приложений модулей и добавить правило автозагрузки в composer.json

Например https://samsonasik.wordpress.com/2014/01/11/zend-framework-2-using-psr-4-autoloader-in-module/

Смежные вопросы