Белая маркировка CakePHP: Каков наилучший способ предоставления пользовательских настроек / обратных вызовов для разработчиков? - PullRequest
1 голос
/ 02 октября 2010

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

Для начала, ониОни смогут делать с представлениями все, что хотят, и могут добавлять свои собственные контроллеры / модели, если им нужно добавлять совершенно новые вещи.Однако я бы посоветовал не прикасаться к моим контроллерам и моделям, чтобы упростить обновление версий.

По сути, возможности настройки, которые я планирую предоставить им, будут довольно простыми.Мне просто нужно вызывать «что-то», когда происходят определенные вещи, чтобы они могли делать такие вещи, как обновление внешних систем, отправка электронной почты себе / клиентам, и тому подобное.

Мне интересно, как лучшечтобы сделать это?

Мой план состоит в том, чтобы иметь «файл» (с одним классом) для каждого моего контроллера, чтобы держать вещи разумно организованными.Этот файл будет содержать несколько пустых методов, которые мой код будет вызывать, и они смогут добавлять код в эти методы, чтобы делать все, что им нужно.

Конкретный вопрос: должен ли этот класс быть полным?Компонент пустых методов?Контроллер?Просто обычный PHP-класс?

Мне нужно будет вызывать методы в этом классе из моих контроллеров, поэтому я предполагаю, что сделать его контроллером не может быть и речи (если, возможно, это не контроллер, который наследуется отмой? или мой наследует от их, наверное).Кроме того, мне нужно, чтобы разработчик этих методов имел доступ к моим Моделям и Компонентам, хотя я согласен с тем, чтобы они использовали App :: Import, мне не нужно устанавливать магические члены $ this-> ModelName..

Кроме того, этот файл, который я создаю (например, Компонент или Контроллер), должен находиться в папке приложения рядом с другими ( my ) контроллерами / компонентами?Или я могу выбросить его где-нибудь отдельно, например, в папку vendors?

Вы уже делали что-то подобное раньше?
Любые советы / советы / ловушки, которых следует избегать, будут приветствоваться.

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 октября 2010

Я бы настроил общий набор событий и использовал бы что-то вроде системы привязки к событиям для обработки этого.

Это позволяет клиентам управлять классами обработчиков событий (прочитайте файл readme, чтобы понять, что я имею в виду), подписываться и транслировать события по всему приложению.

Также - если вы хотите, чтобы ваши пользователи не испортили вашу базовую функциональность, я рекомендую вам упаковать ваше основное приложение как плагин.

http://github.com/m3nt0r/eventful-cakephp

1 голос
/ 03 октября 2010

Две идеи, которые приходят на ум:

  • создание abstract шаблонов (контроллеров, моделей, чего угодно), которые ваши клиенты могут расширять
  • writeваши контроллеры / компоненты / модели в виде плагина в их собственном пространстве имен

В конечном счете вы, кажется, хотите предоставить «улучшенную» платформу Cake, которую ваши клиенты все еще должны написатьсобственный код Cake (я не знаю, как это сочетается с вашей идеей "базовых возможностей настройки").Таким образом, вы должны написать свой код как можно более «необязательным» способом (плагины с пространством имен, компоненты, AppModel улучшения, дополнительные библиотеки) и предоставить документацию о том, как использовать их, чтобы помочь вашим клиентам ускорить их работу.

...