

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
O Zend Framework é um framework PHP orientado a objetos que segue o padrão de arquitetura MVC (Model-View-Controller) e adota princípios como baixo acoplamento, reusabilidade e convenção sobre configuração.
A partir de 2019, o projeto migrou para a comunidade open source sob o nome Laminas Project, mantendo a mesma arquitetura e os mesmos conceitos fundamentais. Entre seus principais componentes estão o sistema de módulos, o Service Manager (gerenciador de serviços baseado em injeção de dependências), o Event Manager e o sistema de rotas.
Considere o seguinte trecho de código representando um controller em uma aplicação baseada no Zend Framework (ZF2/ZF3):

Considerando a arquitetura e os conceitos do Zend Framework (versões 2 e 3), e o funcionamento do framework, assinale a afirmativa correta.
A classe ProdutoController estende AbstractActionController, cujos métodos de ação seguem a convenção de nomenclatura com o sufixo Action (como listarAction). O framework utiliza essa convenção para mapear as rotas às ações correspondentes, de modo que o método listarAction será invocado quando a rota configurada apontar para a ação listar.
O objeto ViewModel retornado pelo método listarAction é responsável por executar as consultas SQL diretamente no banco de dados e armazenar os resultados, funcionando simultaneamente como camada de acesso a dados e como camada de apresentação.
A injeção de dependência de ProdutoService pelo construtor do controller é realizada automaticamente pelo PHP por meio do mecanismo nativo de autoload da linguagem, sem necessidade de configuração adicional no Service Manager do Zend Framework.
No Zend Framework, os controllers devem estender obrigatoriamente a classe AbstractRestfulController, pois o framework foi projetado exclusivamente para a construção de APIs RESTful, não suportando a renderização de páginas HTML por meio de views.
O array associativo ['produtos' => $produtos] passado ao ViewModel é utilizado exclusivamente para definir os cabeçalhos HTTP da resposta, sendo inacessível na camada de view (template) da aplicação.