Articles of design patterns

Инъекция зависимостей: вытягивание необходимых компонентов, когда они действительно необходимы

Суть DI заключается в том, чтобы освободить класс от создания и подготовки объектов, от которых он зависит, и подталкивания их. Это звучит очень разумно, но иногда классу не нужны все объекты, которые вставляются в него для выполнения его функции. Причиной этого является «ранний возврат», который происходит при некорректном вводе пользователя или исключении, вызванном одним из […]

Контролируемые контроллеры с зависимостями

Как я могу разрешать зависимости с контроллером, который можно тестировать? Как это работает: URI направляется на контроллер, контроллер может иметь зависимости для выполнения определенной задачи. <?php require 'vendor/autoload.php'; /* * Registry * Singleton * Tight coupling * Testable? */ $request = new Example\Http\Request(); Example\Dependency\Registry::getInstance()->set('request', $request); $controller = new Example\Controller\RegistryController(); $controller->indexAction(); /* * Service Locator * […]

Шаблоны проектирования Magento

Magento, IMHO, представляет собой систему PHP, которая построена на хорошо продуманных принципах кодирования – один из них – многоразовые шаблоны проектирования. Что касается примера системы PHP, я считаю, что ее можно считать довольно передовым и, следовательно, стоит рассматривать с архитектурной точки зрения. Насколько я понимаю, существует множество шаблонов проектирования, доступных разработчику ООП. Увидев, что такие […]

Шаблон проектирования для внедрения плагинов в приложениях PHP

Существует ли консенсус относительно того, как плагины должны быть реализованы в приложении PHP? Я просмотрел шаблон наблюдателя, который близок, это просто система уведомлений и не позволяет коду расширять приложение напрямую. В настоящее время я использую простые системы крюков, с которыми я столкнулся: public function registerHook($hookName, array $params = array()) { $this->hooks[] = $hookName; foreach ( […]

Шаблоны проектирования, используемые в Zend Framework

Я готовлю разговор об общей архитектуре Zend Framework и хотел бы обобщить используемые в нем шаблоны проектирования. Я считаю, что это будет полезно как для тех, кто знает ZF и обучения DP , так и для тех, кто знает DP и изучает ZF . В первом случае можно было бы увидеть реальное применение шаблонов и […]

Зачем разбивать представление в MVC на класс представления и шаблон

Я относительно новичок в разработке шаблонов, но я чувствую, что у меня есть хорошее представление о шаблоне MVC и преимуществах, которые дает это разделение кода. Тем не менее, оба раза я видел шаблон MVC в действии (Magento и Joomla!), Есть дополнительная специализация, с представлением, состоящим как из класса представления (блок Magento), так и файла шаблона […]

PHP: Я смешиваю программирование, управляемое событиями, с сигнальными интерфейсами (сигналом и слотом / шаблоном наблюдателя)?

Я видел много людей, говорящих, что Symfony2, Zend Framework 2 и другие управляются событиями. В настольном мире, при программировании, основанном на событиях, я понимаю, что приложение будет уведомлять своих наблюдателей всякий раз, когда изменяется его состояние. Поскольку PHP-приложения не имеют отношения к штату, нет никакого способа сделать такую ​​вещь. IE. Наблюдатели привязаны к просмотру, наблюдая […]

PHP MVC: слишком много зависимостей в контроллере?

Я работаю над личным проектом HMVC: Нет локаторов сервисов, глобального состояния (например, static или global ), нет синглтонов. Обработка модели инкапсулируется в сервисах (service = domain objects + repositories + data mappers). Все контроллеры расширяют абстрактный контроллер. Все зависимости проекта вводятся через контейнер инъекций зависимостей Auryn . Все необходимые зависимости вводятся в конструктор абстрактного контроллера. […]

`return $ this;` шаблон дизайна или анти-шаблон?

Я видел много раз Zend Framework, используя return $this; стиль рисунка – и с моей точки зрения: Pro: кажется, это довольно неплохой стиль шаблона для объединения многих действий на одном и том же объекте и сокращения вашего кода. Con: код выглядит немного странным, когда вы видите, что объект возвращает себя в методе, что делает что-то […]

Статические методы: они все еще плохо относятся к PHP 5.3 поздней статической привязке?

Если вы ищете причины, почему статические методы являются плохими, первое, что вы обнаружите, это потому, что вы не можете переопределить его, когда вы тестируете устройство. Так это все еще верно, учитывая, что в PHP 5.3 вы можете делать все, что хотите, с введением static:: ? Добавить: http://sebastian-bergmann.de/archives/883-Stubbing-and-Mocking-Static-Methods.html Обратите внимание, что он объясняет, как использовать синглтон […]