Implementando MVC com Composer em PHP: Estrutura Completa com Arquivo de Rotas
- Home
- Implementando MVC com Composer em PHP: Estrutura Completa com Arquivo de Rotas
- PHP
- Implementando MVC com Composer em PHP: Estrutura Completa com Arquivo de Rotas
Implementando MVC com Composer em PHP: Estrutura Completa com Arquivo de Rotas
O padrão MVC (Model-View-Controller) é amplamente utilizado no desenvolvimento de aplicações web para separar as responsabilidades do código. Ele ajuda a manter a lógica da aplicação, a interface de usuário e a manipulação de dados independentes umas das outras. Junto com o Composer, uma ferramenta de gerenciamento de dependências para PHP, você pode criar um projeto bem estruturado, modular e fácil de manter.
Neste artigo, vamos aprender a implementar o padrão MVC em PHP, utilizando o Composer para autoload e gestão de pacotes, além de organizar as rotas em um arquivo separado.
Configuração Inicial do Projeto
Passo 1: Instalando o Composer
Se ainda não tem o Composer instalado, você pode instalá-lo seguindo as instruções neste post Iniciando um Projeto PHP com Composer: Um Guia Prático.
Passo 2: Criando o Projeto
Crie um novo diretório para o seu projeto e navegue até ele pelo terminal:
mkdir meu_projeto_mvc
cd meu_projeto_mvc
Passo 3: Inicializando o Composer
Inicie um novo projeto com o Composer:
composer init
Siga as instruções para configurar seu composer.json
, abaixo temos um exemplo de como deve ficar:
{
"name": "aluno/www",
"description": "Descrição Teste",
"type": "project",
"autoload": {
"psr-4": {
"App\\": "App/"
}
},
"authors": [
{
"name": "Gustavo Messias",
"email": "gustavo@messias.io"
}
],
"minimum-stability": "dev",
"require": {}
}
Passo 4: Instalando o FastRoute
Vamos usar o FastRoute para gerenciar as rotas da nossa aplicação. Instale-o via Composer:
composer require nikic/fast-route
Estrutura de Pastas do Projeto
A estrutura básica de um projeto MVC pode ser organizada da seguinte maneira:
meu_projeto_mvc/
│
├── App/
│ ├── Controllers/
│ │ └── HomeController.php
│ ├── Models/
│ ├── Views/
│ │ └── home.php
├── config/
│ └── routes.php
├── public/
│ └── index.php
├── vendor/
├── composer.json
app/Controllers/
: Contém os controladores da aplicação.app/Models/
: Contém as classes que representam os dados e a lógica de negócio.app/Views/
: Contém as views, que são as partes visíveis da aplicação.config/
: Contém o arquivo de rotas da aplicação.public/
: Contém o arquivoindex.php
que serve como ponto de entrada para a aplicação.vendor/
: Contém as dependências instaladas pelo Composer.
Implementando o MVC com Arquivo de Rotas
Passo 1: Criando o Controlador
No diretório app/Controllers
, crie um arquivo chamado HomeController.php
:
<?php
namespace App\Controllers;
class HomeController {
public function index() {
return require_once __DIR__ . '/../Views/home.php';
}
}
-
Passo 2: Criando a View
No diretório
app/Views
, crie um arquivo chamadohome.php
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Página Inicial</title>
</head>
<body>
<h1>Bem-vindo ao Meu Projeto MVC!</h1>
</body>
</html>
-
Passo 3: Criando o Arquivo de Rotas
No diretório
config
, crie um arquivo chamadoroutes.php
:
<?php
use App\Controllers\HomeController;
use FastRoute\RouteCollector;
return function(RouteCollector $r) {
$r->addRoute('GET', '/', [HomeController::class, 'index']);
// Adicione mais rotas aqui
};
-
Explicação:
- Aqui estamos retornando uma função que recebe um objeto
RouteCollector
e define as rotas usando o métodoaddRoute
.
Passo 4: Configurando o Ponto de Entrada
No diretório
public
, crie o arquivoindex.php
: - Aqui estamos retornando uma função que recebe um objeto
<?php
require_once __DIR__ . '/../vendor/autoload.php';
$dispatcher = FastRoute\simpleDispatcher(require __DIR__ . '/../config/routes.php');
$httpMethod = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];
$uri = rawurldecode(parse_url($uri, PHP_URL_PATH));
$routeInfo = $dispatcher->dispatch($httpMethod, $uri);
switch ($routeInfo[0]) {
case FastRoute\Dispatcher::NOT_FOUND:
echo '404 - Página não encontrada';
break;
case FastRoute\Dispatcher::METHOD_NOT_ALLOWED:
echo '405 - Método não permitido';
break;
case FastRoute\Dispatcher::FOUND:
$handler = $routeInfo[1];
$vars = $routeInfo[2];
[$controller, $method] = $handler;
echo (new $controller)->$method($vars);
break;
}
-
Explicação:
- A linha
require __DIR__ . '/../config/routes.php'
carrega as rotas definidas no arquivo de rotas, separando a lógica de definição de rotas do arquivo principalindex.php
.
Passo 5: Testando o Projeto
Com o servidor PHP embutido, você pode testar o projeto executando:
- A linha
php -S localhost:8000 -t public
-
Acesse
http://localhost:8000
no seu navegador, e você deverá ver a mensagem "Bem-vindo ao Meu Projeto MVC!".Conclusão
Agora, o projeto está devidamente estruturado com um arquivo de rotas separado, o que melhora a organização e a manutenção do código. Esse arquivo permite que todas as rotas da aplicação sejam centralizadas em um único local, facilitando a leitura e a adição de novas rotas no futuro.
Essa abordagem modular vai ajudar bastante na escalabilidade do projeto e na clareza do código. Para mais informações sobre rotas e o padrão MVC em PHP, consulte a documentação oficial do PHP sobre Autoload e a documentação do Composer.
Deixe seu comentário
Posts RELACIONADOS
Como Criar um Chat em Tempo Real com PHP e WebSockets
Neste tutorial, você aprenderá como criar um sistema de chat em tempo real utilizando WebSockets com PHP para o backend e HTML, CSS e JavaScript...
Gerenciando Sessões com $_SESSION em PHP: Como Armazenar e Recuperar Dados
Introdução
Quando desenvolvemos aplicações web, muitas vezes precisamos manter informações de um usuário ativo durante toda a sua navegação no site, como por exemplo, dados de...Como Instalar e Usar o Eloquent em um Projeto PHP: Exemplo de instalação e uso com a base Sakila
Neste post, você aprenderá como instalar e configurar o Eloquent ORM em um projeto PHP. Utilizaremos a base de dados Sakila, um exemplo clássico de...
Introdução à Programação Orientada a Objetos (POO) em PHP: Conceitos e Exemplo Prático
Introdução
A Programação Orientada a Objetos (POO) é um paradigma de programação que utiliza "objetos" para representar dados e funcionalidades. Em PHP, a POO é uma...Como Criar Funções em PHP: Guia com Exemplos Práticos
Neste post, você aprenderá como criar e utilizar funções em PHP. Vamos explorar a sintaxe básica, os parâmetros, valores de retorno e como as funções...
Realizando Requisições POST com PHP: Guia e Formulário de Exemplo
Neste post, você aprenderá como realizar requisições POST em PHP, enviando dados de um formulário HTML para o servidor. Vamos abordar a criação de um...
Requisições GET com PHP: Guia Completo com Exemplo de Formulário
Neste post, você aprenderá como realizar requisições GET em PHP. Vamos explorar a estrutura de uma requisição GET, criar um exemplo de formulário e mostrar...
Iniciando um Projeto PHP com Composer: Um Guia Prático
Neste post, você aprenderá como iniciar um projeto PHP do zero utilizando o Composer. Vamos cobrir a instalação do Composer, criação de um novo projeto,...
Explorando Arrays em PHP: Manipulação de Dados de Forma Eficiente
Neste post, você aprenderá sobre arrays em PHP, uma estrutura de dados fundamental. Vamos explorar a criação, manipulação e iteração de arrays, além de ver...
Explorando Laços de Repetição em PHP: Estruturas Essenciais
Entenda como utilizar diferentes laços de repetição em PHP para tornar seu código mais eficiente e organizado