segunda-feira, 22 de abril de 2024

Laminas MVC - Parte 1, conceitos básicos

Começo aqui um projeto de Laminas MVC do zero. Começaremos desde os conceitos básicos até escrever uma aplicação completa com autenticação e autorização.


O Laminas Framework (anteriormente conhecido como Zend Framework) é um framework PHP que segue os princípios da Orientação a Objetos e do padrão de arquitetura MVC (Model-View-Controller). 

No Laminas, cada parte do projeto é separada em um módulo. Em cada módulo você tem a estrutura completa de um modelo MVC. A ideia é a reutilização de módulos em diferentes projetos realizando pouca ou nenhuma alteração no código.

No contexto do Laminas, o MVC é fundamental para a estruturação e organização das aplicações web. Vamos explorar os conceitos básicos do MVC com Laminas:

1. Modelo (Model)

O Modelo representa a camada de acesso aos dados e a lógica de negócios da aplicação. Ele interage com a fonte de dados, como um banco de dados ou serviços externos, para recuperar e manipular os dados necessários. No Laminas, os modelos podem ser classes PHP que encapsulam a lógica de negócios e as operações de acesso aos dados.

Exemplo de um modelo no Laminas:

 

 

 
namespace Application\Model;

use Laminas\Db\TableGateway\TableGatewayInterface;

class ProductTable
{
    protected $tableGateway;

    public function __construct(TableGatewayInterface $tableGateway)
    {
        $this->tableGateway = $tableGateway;
    }

    public function fetchAll()
    {
        $resultSet = $this->tableGateway->select();
        return $resultSet;
    }
}

2. Visão (View)

A Visão é responsável por apresentar os dados aos usuários em um formato compreensível. No Laminas, as visões são arquivos de script que contêm HTML e elementos de marcação, juntamente com tags especiais que permitem a inclusão de dados dinâmicos. As visões são separadas do código de negócios, permitindo uma fácil manutenção e modificação.

Exemplo de uma visão no Laminas:

 

3. Controlador (Controller) O Controlador atua como intermediário entre o Modelo e a Visão. Ele recebe as requisições do usuário, interage com o Modelo para recuperar os dados necessários e, em seguida, passa esses dados para a Visão para renderização. No Laminas, os controladores são classes PHP que contêm métodos que correspondem às ações do usuário. Exemplo de um controlador no Laminas:
namespace Application\Controller;

use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
use Application\Model\ProductTable;

class ProductController extends AbstractActionController
{
    private $table;

    public function __construct(ProductTable $table)
    {
        $this->table = $table;
    }

    public function indexAction()
    {
        $products = $this->table->fetchAll();
        return new ViewModel([
            'products' => $products,
        ]);
    }
} 
O padrão de arquitetura MVC com Laminas fornece uma estrutura organizada e modular para o desenvolvimento de aplicativos web em PHP. Ao separar as preocupações de apresentação, lógica de negócios e acesso aos dados, o MVC facilita a manutenção, escalabilidade e reutilização de código em projetos de todos os tamanhos.