Я разрабатываю приложение CakePHP, которое мы предоставим людям в качестве белой этикетки для реализации в их собственных компаниях, и им потребуются определенные возможности настройки для себя.
Во-первых, они смогут делать с представлениями все, что захотят, и они могут добавлять свои собственные контроллеры/модели, если им нужно добавить совершенно новые вещи. Однако я бы не советовал трогать мои контроллеры и модели, чтобы упростить обновление версии.
По сути, возможности настройки, которые я планирую предоставить им, будут довольно простыми, мне просто нужно вызывать «что-то», когда происходят определенные вещи, чтобы они могли делать такие вещи, как обновление внешних систем, отправка электронной почты себе/клиентам, такие вещи.
Мне интересно, как лучше всего это сделать?
Мой план состоит в том, чтобы иметь «файл» (с одним классом) для каждого моего контроллера, чтобы все было разумно организовано. В этом файле будет куча пустых методов, которые будет вызывать мой код, и они смогут добавлять код внутри этих методов, чтобы делать все, что им нужно.
Конкретный вопрос заключается в том, должен ли этот класс, полный пустых методов, быть компонентом? Контролер? Просто обычный класс PHP?
Мне нужно будет вызывать методы в этом классе из моих контроллеров, поэтому я предполагаю, что о том, чтобы сделать его контроллером, не может быть и речи (если, возможно, это не контроллер, который наследуется от моего? или, возможно, мой наследуется от их). Кроме того, мне нужно, чтобы реализатор этих методов имел доступ к моим моделям и компонентам, хотя я согласен заставить их использовать App::Import, мне не нужно, чтобы волшебные элементы $this->ModelName были установлены .
Кроме того, этот файл, который я создаю (компонент или контроллер), должен находиться в папке приложения рядом с другими (моими) контроллерами/компонентами? Или можно куда-то отдельно кинуть типа папки vendors?
Делали ли вы что-то подобное раньше?
Будем рады любым советам/рекомендациям/подводным камням, которых следует избегать.
Я знаю, что это довольно субъективно, я в основном хочу услышать о вашем опыте, если вы делали это раньше.
Спасибо!