zendframework 2 - куда сохранить папку пользовательской библиотеки

В Zendframework-1 мы обычно сохраняем настроенный код в папке библиотеки (параллельно папке приложения), почти используя ту же структуру папок, что и библиотека zend framework (vendor), для создания плагина или расширения основной библиотеки.

В zend framework 2 изменена структура папок. Базовая библиотека zend vendor перемещается в папку Vendor, а папка приложения перемещается в папку Module (корневую).

Мой вопрос: где лучше всего сохранить в ZF2 настроенную папку библиотеки на основе плагинов / кода?

Кто-нибудь еще прошел через эту фазу?


person Developer    schedule 06.08.2012    source источник
comment
Проверьте этот пост в stackoverflow ... stackoverflow.com/questions/8559107/   -  person Kdecom    schedule 22.10.2012


Ответы (2)


Зависит от цели вашей библиотеки

Случай 1, используется многими модулями:
Поместите его в папку вашего поставщика, убедитесь, что он совместим с PSR-0, что упрощает автозагрузку.

Случай 2, используется только одним модулем:
Поместите его в modules/your_module/src и отредактируйте метод Module.phps getAutoloaderConfig(), чтобы он загружался автоматически.

....

class Module {

....

public function getAutoloaderConfig()
{
    return array(
        'Zend\Loader\ClassMapAutoloader' => array(
            __DIR__ . '/autoload_classmap.php',      // classmap for production usage
        ),
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, // your module's files autoloading (development usage and fallback)
                'library_namespace' => __DIR__ . '/src/librarys_namespace/potential_subfolder', // your library files autoloading (development usage and fallback). eg: 'acme' => '/src/acme/library' for acme namespace
            ),
        ),
    );
}

....

Случай 3, ваша библиотека является сторонним модулем:
Поместите его в папку поставщика, ссылки смотрите на ZfcUser

Я думаю, что ваш вариант использования больше всего похож на случай 1, ваша библиотека изменяет поведение, например. Zend\Mvc\Controller\AbstractActionController или дополнительные плагины. Но если подключаемый модуль используется только одним модулем, лучше разместить его параллельно коду модулей, как описано в случае 2.

person Samuel Herzog    schedule 06.08.2012
comment
Спасибо за информацию, попрошу владельца блога дать ссылку на мою оригинальную работу. (Я не буду подавать на него в суд, потому что большинство из этих вещей довольно шаблонное, но давайте будем честными, я приложил немало усилий, чтобы ответить как можно лучше, и не хочу, чтобы меня копировали бесплатно) - person Samuel Herzog; 12.02.2014

./vendor, если ваш код имеет общие цели (например, такие классы, как StdClass, ArrayAccess, Iterator и т. Д.). Короче говоря, если эти классы необходимы для работы модулей, они должны быть внутри поставщика.

./module В случае, если ваши плагины / коды предназначены для определенной цели (и являются автономными), вы можете оценить, является ли это модуль или нет (например: модули / плагины сторонних разработчиков ZF-Commons, такие как ZfcUser)

person Sam    schedule 06.08.2012