Загрузчик пакетов плагинов Zend Framework - PullRequest
2 голосов
/ 22 января 2011

Задача:

Я хочу модулировать папку моей библиотеки в моем приложении Zend Framework.Это нормально, если вы хотите поместить все в одно и то же пространство имен, например «App_».Но проблема возникает, когда у вас есть дюжина пакетов, таких как пакет SignUp, пакет ACL, пакет навигации, пакет Foo и т. Д. Теперь у каждого пакета есть несколько помощников вида, некоторые плагины контроллера, некоторые помощники действий плюс некоторые другие базовые классы.Вы можете добавить каждый вспомогательный путь к представлению по отдельности, но это может испортить ваш файл application.ini / bootstrap.

Так что вопрос в том, знает ли кто-нибудь загрузчик Plugin Package для ZF?

Чтобы уточнить, было бы неплохо иметь плагин ресурсов, которому вы передаете имя пакета, он добавляет пространство имен, регистрирует некоторые параметры по умолчанию, такие как пути помощников, а затем вы можете настроить его для добавления помощников в посредники Action Helper.Каждый пакет плагинов может иметь свой собственный INI-файл или класс инициализации, где программист может инициализировать пакет плагинов.Будем благодарны за любые мысли или знания о чем-то подобном.

Ответы [ 2 ]

1 голос
/ 27 января 2011

Ваш вопрос трудно найти решение. Кажется, ZF не используется так, как вы хотите.

Например, вы хотите следующие пакеты

  1. Навигация
  2. ACL
  3. Регистрация

Все они полностью отделены друг от друга и не все «подключаются» к ZF аналогичным образом.

  1. Навигация должна храниться и создаваться для каждого запроса, который нуждается в пакете, тогда объект навигации должен использоваться в Zend_View объектах или, возможно, нет. Что происходит, когда на навигацию ссылаются в виде, но она не существует?
  2. Пакет ACL настолько специфичен, он интегрируется в ZF множеством различных способов, ему нужен Zend_Controller_Plugin, ему нужен способ осмысленного хранения и построения объекта Zend_Acl для запроса приложения к база приложения.
  3. Для регистрации требуется контроллер, действие и форма, которые передаются в Zend_View, а форма должна быть обработана. Затем его необходимо подключить к вашему объекту ACL, предположительно к базе данных и, возможно, к различным другим частям вашего сайта, для этого требуются более конкретные разрешения, выходящие за рамки использования для ACL

Это не невозможно делать то, что вы хотите, но должен быть лучший способ. Похоже, вы пытаетесь создать CMS с дополнительными подключаемыми пакетами?

Проблема ACL, которую я решил, имея библиотеку контроллеров, помощников, моделей, форм и т. Д. A Zend_Controller_Plugin запускается и пытается войти в систему пользователя, этот плагин запускается для каждого приложения, которое я создаю, он работает хорошо использует формат объекта ACL, который я использовал некоторое время.

Для регистрации у меня есть RegisterController в моей библиотеке, если мое приложение требует регистрации, оно имеет свой собственный RegisterController, который расширяет RegisterController в библиотеке. Если приложение не нуждается в регистрации, оно не имеет собственного RegisterController.

Я надеюсь, что это помогает, я действительно думаю, что делать это предложенным абстрактным способом не стоит и никогда не будет настолько твердым и жестким, что вы действительно можете положиться на него, потому что каждое приложение является специфическим.

0 голосов
/ 24 января 2011

Как правило, в этом случае вы должны использовать модули, которые уже являются модульными, а не модулировать библиотеку.

modules/
   signup/
     models/
     plugins/

Автоматический загрузчик ресурсов модуля по умолчанию настроен для загрузки плагинов:

См .: http://framework.zend.com/manual/en/zend.loader.autoloader-resource.html:

Если вам действительно нужна модульная библиотека, лучше всего подойдет настроенный автозагрузчик (есть простой расширяемый абстрактный автозагрузчик).

Вы также можете рассмотреть отдельную библиотеку для каждого модуля, добавленную в ваш путь включения (не рекомендуется, поскольку это замедлит работу приложения):

modules/
   signup/
     models/
     library/
...