Шаблоны дизайна, используемые в CakePHP - PullRequest
10 голосов
/ 11 января 2012

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

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

Примеры книг, которые я имеючитал по теме: Я читаю следующие книги, которые в той или иной степени охватывают шаблоны проектирования;к сожалению, они в основном используют примеры кода на Java и C ++, что затрудняет мне понимание шаблонов проектирования на практическом уровне (я - разработчик PHP, поэтому мне трудно его освоить): "Шаблоны архитектуры корпоративных приложений" , Мартина Фаулера «Первые образцы дизайна для головы» , от Gang of Four (Эрик Фриман, Элизабет Фриман, Кэти Сьерра и Берт Бейтс) (2004) «Шаблоны проектирования: элементы Resuable Object-Oriented Software)» , Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес)

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

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

Ответы [ 2 ]

4 голосов
/ 11 января 2012

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

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

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

}
3 голосов
/ 17 апреля 2013

Шаблоны проектирования программного обеспечения (например, RoR):

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

  • Модель-Вид-Контроллер: папки: Модель, Контроллер, Вид и т. Д.

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

  • Фронт-контроллер: главная точка входа (index.php)

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

Шаблоны творчества:

  • Singleton - поиск по "getInstance, singleton"

  • Фабрика - найти по "фабрике"

  • Строитель - найти по "Строителю"

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

  • Адаптер - поиск по «адаптеру»

  • Фронт-контроллер (.htaccess, включая)

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

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

Вид:

  • Шаблон двухступенчатого просмотра - "двухступенчатый просмотр"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...