1. O modelo MVC

Introdução ao Modelo MVC

O Model-View-Controller (MVC) é uma arquitetura de software que separa uma aplicação em três componentes principais: Modelo (Model), Vista (View) e Controlador (Controller). Esta separação facilita a organização do código, promovendo uma manutenção mais simples e uma escalabilidade eficiente.

Componentes do MVC

  1. Modelo (Model) O Modelo é responsável pela lógica de dados da aplicação. Ele representa a estrutura dos dados que interagem com a base de dados. Em Laravel, os modelos correspondem às tabelas da base de dados e gerem a comunicação entre a aplicação e a base de dados.

    // Exemplo de um modelo em Laravel
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Produto extends Model
    {
        protected $table = 'produtos';
        protected $fillable = ['nome', 'descricao', 'preco'];
    }
    
  2. Vista (View) A Vista é responsável pela apresentação dos dados ao utilizador. Em Laravel, as Vistas são ficheiros Blade (extensão .blade.php) que permitem inserir lógica de apresentação simples no HTML, facilitando a renderização dinâmica dos dados.

    <!-- Exemplo de uma vista Blade -->
    <!DOCTYPE html>
    <html>
    <head>
        <title>Lista de Produtos</title>
    </head>
    <body>
        <h1>Produtos Disponíveis</h1>
        <ul>
            @foreach ($produtos as $produto)
                <li>{{ $produto->nome }} - €{{ $produto->preco }}</li>
            @endforeach
        </ul>
    </body>
    </html>
    
  3. Controlador (Controller) O Controlador age como intermediário entre o Modelo e a Vista. Ele processa as requisições do utilizador, interage com o Modelo para obter os dados, e então seleciona a Vista apropriada para exibir esses dados.

    // Exemplo de um controlador em Laravel
    namespace App\Http\Controllers;
    
    use App\Models\Produto;
    use Illuminate\Http\Request;
    
    class ProdutosController extends Controller
    {
        public function index()
        {
            $produtos = Produto::all();
            return view('produtos.index', compact('produtos'));
        }
    
        public function show($id)
        {
            $produto = Produto::findOrFail($id);
            return view('produtos.show', compact('produto'));
        }
    }
    

Exemplo Prático

Imaginemos uma aplicação Laravel simples para gerir a lista de produtos de uma loja online. O fluxo para exibir a lista de produtos seria:

  1. Rota: Definir uma rota que aponte para o método index do ProdutosController.

    use App\Http\Controllers\ProdutosController;
    
    Route::get('/produtos', [ProdutosController::class, 'index']);
    
  2. Controlador: No ProdutosController, o método index obtém todos os produtos e passa-os para a Vista.

    public function index()
    {
        $produtos = Produto::all();
        return view('produtos.index', compact('produtos'));
    }
    
  3. Modelo: O modelo Produto representa a tabela produtos na base de dados e é utilizado pelo controlador para obter os dados.

    class Produto extends Model
    {
        protected $table = 'produtos';
        protected $fillable = ['nome', 'descricao', 'preco'];
    }
    
  4. Vista: A vista produtos/index.blade.php exibe a lista de produtos.

    <!DOCTYPE html>
    <html>
    <head>
        <title>Lista de Produtos</title>
    </head>
    <body>
        <h1>Produtos Disponíveis</h1>
        <ul>
            @foreach ($produtos as $produto)
                <li>{{ $produto->nome }} - €{{ $produto->preco }}</li>
            @endforeach
        </ul>
    </body>
    </html>
    

Resumo

O modelo MVC é uma maneira eficaz de organizar o código numa aplicação web, dividindo responsabilidades entre a gestão de dados (Modelo), a apresentação de dados (Vista) e a lógica de aplicação e controlo do fluxo (Controlador). O Laravel adere a este padrão de forma robusta, facilitando a sua implementação através de classes e estruturas bem definidas.

Índice 2. Instalar/configurar o... >>