2012-01-11 3 views
10

Мой вопрос:
Каковы некоторые примеры шаблонов проектирования, используемых в CakePHP?
Шаблоны проектирования, используемые в CakePHP

Зачем использовать CakePHP Как Мой контексте
Я использую CakePHP около года, так что я думаю, что мне легче думать в этом контексте. CakePHP также богат использованием шаблонов (я уверен в этом) - я просто не знаю, какие шаблоны используются, кроме нескольких очевидных.

Пример Книги, которые я читал на тему:
Я читаю следующие книги, которые все дизайнерские крышки модели в той или иной степени; к сожалению, они в основном используют примеры кода на Java и C++, что затрудняет для меня полное понимание шаблонов проектирования на практическом уровне (я разработчик PHP, поэтому мне трудно его поглощать):
«Шаблоны Архитектура предприятия Application ", Мартин Фаулер
"Head First Design Patterns", по банды четырех (Эрик Фримен, Элизабет Фримен, Кэти Сьерра & Берт Bates) (2004)
" Design Patterns: Элементы Resuable Объектно-ориентированное программное обеспечение) «, Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес)

Примеры шаблонов я могу наблюдать в CakePHP
угадывание -Я конфигурационный файл использует что-то похожее на завод модель
-Может $ this-> Params использует что-то связанное с наблюдателя шаблон? Я не уверен в том, что ...
-MVC (очевидно! Так Cake PHP использует файловую структуру MVC)
-ORM (еще один очень очевидный)
-Может HTML-помощник использует шаблон декоратора?

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

+4

IMHO Cake, к сожалению, использует слишком мало рисунков. Более сложное применение OO/инкапсуляции/зависимости/развязка/утиная печать помогут в разработке более сложных приложений. Только мои 2 цента. – deceze

+0

ActiveRecord, картографирование данных ассоциации, фронтальный контроллер и MVC. – bancer

+0

Я начинаю видеть, как некоторые шаблоны конструкций перекрываются. Например, шаблон проектирования «модель домена» перекрывает «M» в MVC. Шаблон простой модели домена имеет одну таблицу базы данных для каждого объекта домена. Это перекрывает стандартный шаблон CakePHP для «M» или Model в MVC (где у нас фактически есть один класс «M-Model» для каждой таблицы базы данных). Другим примером перекрытия является шаблон «front controller», в котором «C» (контроллер) в CakePHP также выступает в качестве «сценария транзакции» (так как у торта есть этот запрос this this>, который обрабатывает $ _get/$ _ post/и $ _request. ..) –

ответ

4

Один, который приходит на ум, - это концепция mixins. Не совсем шаблон, но на самом деле языковая функция, доступная на некоторых языках (т. Е. Модули в Ruby), но не в других (например, Java). Он будет поступать на PHP, когда 5.4 стабилизируется, и мы получаем traits, но поведение модели CakePHP - хороший пример подражания такого рода множественному наследованию, где это обычно невозможно.

class Post extends AppModel { // we can only inherit from one class 

    public $actsAs = array('This', 'That', 'Other'); // but we can do this instead 

} 
+0

Разве это не ограничение CakePHP, а PHP как язык программирования? –

+0

Действительно, CakePHP сделал отсутствие этой языковой функции без проблем, позволив нам легко сделать это в наших приложениях MVC до PHP 4. Стоит отметить, что это не просто поведение, похожее на mixins/traits .. но и компоненты контроллера, помощники вида и задачи оболочки. – deizel

+0

Ваша мысль о миксинах/множественном наследовании, безусловно, стоит упомянуть. Я не понимал, что PHP 5.4 будет включать в себя mixins - это хорошие новости. –

3

дизайн программного обеспечения модели (как в RoR):

  • конвенции по конфигурации: все конфигурационные файлы из Configure

  • Model-View-Controller: папки: Модель, контроллер, вид , и т. д.

  • ActiveRecord, картографирование данных ассоциации: сопоставление базы данных

  • Front Controller: главная точка входа (index.php)

Найдено в комментариях:

Творения моделей:

  • Singleton - найти по «GetInstance, singleton "

  • Фабрика - найти по" завод "

  • Builder - поиск по "строитель"

Структурные узоры:

  • адаптер - найти в "адаптер"

  • Front контроллера (.htaccess, включают в себя)

Поведенческие модели:

  • стратегия - поиск по "стратегии"

Вид:

  • Двухступенчатая ракурса картина - "два шага вида"
Смежные вопросы