Pra começar de verdade por aqui, eu queria descomplicar as coisas para quem está começando, então vou escrever um pouco sobre Módulos, Eventos e o Service Manager.
Vejo muita comparação sobre porque usar o ZF2 ao invés do CakePHP, ou CI (Code Igniter) ou Laravel, e não da pra você comparar simplesmente porque alguém falou que era melhor, além da obvia falta de personalidade, cabe a você entender a fundo para poder escolher entre os muitos fatores que nem sempre se resumem ao código (ainda temos prazos, preços, preferência do patrão, preferência por questões didáticas e muitos outros fatores).
Antes de sair por ai tentando escrever códigos para o Zend Framework 2 (e quebrar a cara na maioria das vezes) devemos entender os "conceitos" por traz do framework.
Gostou deste artigo?
Receba atualizações semanais com novos artigos do WebDevBr e outras dicas!
Primeiro, entenda que o Zend Framework 2 se utiliza de Orientação a Objetos de verdade e não aquele monte de classes que muitas vezes acreditamos que conhecemos! Muita gente quebra a cara ai.
Então antes de continuar, acesse a área de alunos e faça o teste de conhecimento no nível intermediário.
Módulos
Módulos são conjuntos de MVC que resolvem um assunto específico, por exemplo, se você for criar um site para imobiliária teria os módulos:
- Imoveis
- Corretores
- Usuários
Aonde cada um cuida exclusivamente do um assunto em questão, como guarda as informações e configurações que lhe são pertinentes para funcionar, persistir os dados, realizar testes, exibir telas... esse conceito de modularidade é excelente porque além de organizar e facilitar a manutenção permite que você compartilhe seu módulo com a comunidade ou reutilizar mais facilmente (especialmente se você usa o Composer), você ainda pode usar módulos de terceitos e deleguar mais facilmente tarefas a sua equipe.
Então se você leu até aqui já deve ter entendido que módulo não tem nada a ver com Model (M do MVC).
Eventos
Se eventos não foi a grande sacada do ZF2 então não sei o que seria, o conceito de eventos é que quando algo acontece você deve tomar uma ação expecífica, trocando em miúdos, o evento fica escutando algo específico e executa uma tarefa quando necessário.
Um exemplo prático é de um sistema de autenticação, o evento escuta quando um determinado (ou determinados) controller for acessado, e quando isso acontece ele executa a ação de checar a autenticação do usuário, se der certo ele acessa, caso contrário deverá ser bloqueado de alguma forma.
No Zend Framework o evento criado fica alí, esperando algo acontecer, e quando acontece o módulo avisa e algum observador (que pode ser um controller ou qualquer coisa) para tomar as devidas providências.
O Evento em sí não é a solução para nada ele apenas informa que algo aconteceu.
Veja o que diz a documentação do Zend Framework 2 sobre isso:
O EventManager é um componente projetado para os seguintes casos de uso:
Implementar simples padrões sujeito/observador.
Implementação de projetos Aspect-Oriented.
Implementação de arquiteturas orientadas a eventos.
A arquitetura básica permite ligar e desligar os ouvintes para eventos nomeados, tanto em uma base por exemplo, bem como através de coleções compartilhadas, desencadear eventos ou interromper a execução de ouvintes.
Aqui a página oficial com um exemplo de código.
Service Manager
Se os eventos são a grande sacada no ZF2, o Service Manager é o coração do framework, e é bem simples de entender também. O service manager é responsável, principalmente por retornar classes instanciadas corretamente e com todas as dependências resolvidas.
Sempre que um serviço é criado e registrado no ZF2, ele fica disponível para ser usado na aplicação de uma forma muito mais simples e prática.
Além do Service Manager, o ZF ainda tem o Zend/Di, que também trabalha com injeção de dependências, vale conhecer.
Conclusão
Claro que isso é só o começo, nem dei um exemplo prático sobre, mas aguarde, teremos muito ainda sobre o assunto.