2013-06-05 1 views
5

Я работаю над проектом, и я смущен, чтобы указать, в каком коде. Я приведу здесь простой пример, чтобы показать, почему я немного смущен.Компоненты CakePHP VS Libs и оболочки

Представьте себе несколько веб-страниц в приложении cakephp, где так или иначе можно создать учетную запись - вместе с этой учетной записью необходимо вызвать несколько других функций из обеих моделей и библиотек (например, запишите что-нибудь, создайте сертификат для Счет, ...).

Видя, что это необходимо сделать в нескольких местах и ​​не совсем принадлежит модели (+ это довольно-таки некоторый код), лучший способ - использовать компоненты, которые я думал.

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

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

Вот и вопросы :) => Итак, все мои компоненты должны быть libs ?, правильно ли это архитектура для загрузки моделей/других libs и т. Д. Внутри этих libs ?, что такое использование компонентов? хорошо 'rm -rf' их и использовать только libs?

До сих пор, как я использовал компоненты, нужно поместить всю логику процесса, которая может/должна быть разделена между ними. Libs Я использовал, когда мне не нужны никакие Модели или просто набор статических функций (например, для обработки изображений). Выполнение этого Я ударил стену, где я хочу/должен иметь доступ к логике в этих компонентах при использовании сценариев оболочки.

Любая идея о том, где мое понимание идет не так?

ответ

4

Вы уже дали ответы на все вопросы!

Да, компоненты для обмена функциями между контроллерами. Только контроллеры. Итак, если вам нужна эта функциональность в модели или оболочке, чем ее неуместная.

Вы должны поместить код, который используется как моей оболочкой, так и контроллером, в слой модели (если его связанная с моделью/db) или libs (static/calc stuff и т. Д.). Тогда они могут использоваться с обеих сторон.

Вы можете использовать модели в libs и vica versa. Просто будьте осторожны, чтобы не создавать слишком много зависимостей и циклических отношений. Те же трудно проверить/продлить/изменить.

Компоненты полезны для обертывания этих методов lib/model для быстрого и удобного доступа к контроллеру, а также для выполнения более автоматизированной и управляемой контроллером обработки. Подобно SessionComponent, который только обертывает класс CakeSession, чтобы обеспечить легкий доступ к сеансу в контроллере.

Кстати: такую ​​же удобную упаковку вы также можете сделать в среде командной строки с помощью Задачи. Это не что иное, как «компоненты для снарядов».

+0

Спасибо за подтверждение моих первоначальных мыслей! Не захотелось размещать код в неправильных местах, так как это помешает мне в дальнейшем развитии/расширении. – Crazy

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