Os criadores do Zend Framework 3 são grandes fãs de vários padrões de design (Design Patterns). Apesar você não precisa entender esses padrões para ler este livro, esta seção é destinada para lhe dar uma idéia de quais design patterns o ZF3 é baseado
Padrão Model-View-Controller (MVC). O padrão Model-View-Controller é usado em todos os frameworks modernos do PHP. Em uma aplicação MVC, você separa seu código em três categorias: models (sua lógica de negócios), views (sua apresentação) e controllers (código responsável pela interação com usuário).sso também é chamado A separação das preocupações. Com o MVC, você pode reutilizar seus componentes. Também é fácil substituir qualquer parte desses três. Por exemplo, você pode facilmente substituir uma exibição por outra, sem mudando sua lógica de negócios.
Domain Driven Design (DDD) pattern. In Zend Framework 3, by convention, you will have model layer further divided into entities (classes mapped on database tables), repositories (classes used to retrieve entities from database), value objects (model classes not having identity), services (classes responsible for business logic).
Aspect Oriented Design pattern.No ZF3, tudo é orientado a eventos.
Quando um usuário do site solicita uma página, um evento é gerado (acionado). Um Listener (ou observador) pode
pegar evento e fazer alguma coisa com ele. Por exemplo, o componente, Zend\Router
analisa a
URL e determina qual controller deve chamar Quando o evento finalmente chega à página
renderizador, uma resposta HTTP é gerada e o usuário vê a página da web.
Padrão Singleton. No ZF3, existe um objeto que gerenciador de serviços (service manager) é o container que centraliza todos os serviços disponíveis no aplicativo. Cada serviço existe apenas para uma única instância.
Strategy pattern. Uma estratégia é apenas uma classe que encapsula algum algoritmo. E você pode usar algoritmos diferentes com base em alguma condição. Por exemplo, o processador de páginas tem várias estratégias de renderização, tornando possível renderizar páginas da Web de forma (o renderizador pode gerar uma página HTML, uma resposta JSON, um feed RSS etc.)
Adapter pattern. Os adaptadores permitem adaptar uma classe genérica.
Por exemplo, o componente @ Zend\Db
fornece acesso ao banco de dados de maneira genérica.
Internamente, ele usa adaptadores para cada banco de dados suportado (SQLite, MySQL, PostgreSQL e assim por diante).
Factory pattern. Você pode criar uma instância de uma classe usando o operador new
. Ou você pode criá-lo com uma factory.
Uma factory é apenas uma classe que encapsula a criação de outros objetos
Factories são úteis porque simplificam a injeção de dependência. Usando factory também
simplifica o teste do seu modelo e das classes do controlador.