Se você quer trabalhar com PHP moderno, precisa ter o Composer no seu dia a dia.
Ele é o “gerente de dependências” que organiza bibliotecas, autoload, versões e muito mais.
Neste guia, vou te mostrar de forma prática como:
- instalar o Composer
- criar um projeto do zero
- organizar pastas
- usar autoload pra carregar suas classes automaticamente
Mesmo que você nunca tenha usado o Composer, é só seguir os passos.
1. O que você precisa antes de começar
- PHP instalado na máquina (PHP 8 de preferência)
- Acesso ao terminal (cmd, PowerShell ou terminal do Linux/Mac)
- Composer instalado (se ainda não tem, baixe em getcomposer.org, o instalador faz tudo sozinho)
Para verificar se o Composer está instalado, execute no terminal:
composer -V
Se aparecer algo como Composer version X.Y.Z, está tudo certo.
2. Criando a pasta do projeto
Escolha uma pasta no seu computador e crie o projeto, por exemplo:
mkdir meu-projeto-php
cd meu-projeto-php
É dentro dessa pasta que vamos montar tudo.
3. Iniciando o Composer no projeto
Dentro da pasta do projeto, execute:
composer init
Ele vai fazer algumas perguntas no terminal:
- Package name (nome do pacote): você pode colocar algo como
seunome/meu-projeto-php - Description: uma descrição simples
- Author: seu nome
- Pode dar Enter nas opções que não quiser mexer agora.
No final, ele vai criar um arquivo chamado composer.json na raiz do projeto.
Esse arquivo é o “coração” da sua configuração.
4. Criando a estrutura de pastas moderna
Vamos criar a estrutura padrão:
mkdir src
mkdir public
Fica assim:
meu-projeto-php/
composer.json
src/
public/
- src/ → seu código PHP (classes, regras de negócio)
- public/ → arquivos acessíveis pelo navegador (index.php, assets, etc.)
5. Configurando o autoload (PSR-4)
No PHP moderno, você não fica dando require manual em cada arquivo.
Você configura o autoload no composer.json e deixa o Composer cuidar disso.
Abra o composer.json e adicione uma seção autoload assim:
{
"name": "seunome/meu-projeto-php",
"description": "Meu primeiro projeto PHP moderno",
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"require": {}
}
Isso significa:
- Tudo que estiver no namespace
App\vai ser carregado a partir da pastasrc/.
Depois, rode:
composer dump-autoload
Esse comando gera os arquivos necessários pro autoload funcionar.
6. Criando a primeira classe dentro de src/
Dentro da pasta src, crie um arquivo chamado Hello.php com o conteúdo:
<?php
namespace App;
class Hello
{
public function saudacao(): string
{
return "Olá, mundo em PHP moderno!";
}
}
Repare em três coisas:
namespace App;→ bate com o autoload que definimos- A classe
Helloestá dentro da pastasrc/ - O método
saudacao()tem tipo de retornostring
7. Criando o index.php na pasta public/
Agora vamos criar o arquivo que o navegador vai acessar.
Dentro de public/, crie index.php:
<?php
require __DIR__ . '/../vendor/autoload.php';
use App\Hello;
$hello = new Hello();
echo "<h1>" . $hello->saudacao() . "</h1>";
Aqui acontece a mágica:
require ../vendor/autoload.php→ carrega automaticamente todas as classes do projetouse App\Hello;→ usamos a classe que criamos emsrc/Hello.php- Não precisa de
require 'src/Hello.php';manual
8. Rodando o projeto em um servidor embutido
Se você tiver PHP instalado, pode rodar um servidor local simples, assim:
No terminal, dentro da pasta do projeto:
php -S localhost:8000 -t public
Agora, abra o navegador em:
http://localhost:8000
Você deve ver a mensagem:
Olá, mundo em PHP moderno!
Se isso apareceu, parabéns: você acabou de criar seu primeiro projeto PHP moderno com Composer e autoload.
9. A partir daqui, como evoluir o projeto?
Você pode:
- Criar novas classes em
src/ - Dividir em pastas, por exemplo:
src/Controller/src/Model/src/Service/
- Instalar bibliotecas com
composer require, por exemplo:- para enviar e-mail
- fazer chamadas HTTP
- lidar com datas, etc.
Cada nova classe dentro de src/ com namespace App\Algo poderá ser usada em qualquer lugar só com use App\Algo; e o autoload já cuida do resto.
Resumindo
- Composer é essencial no PHP moderno.
- Você organiza o código em
src/epublic/. - Usa autoload pra não ficar dando
requiremanual. - Em poucos passos você já tem uma estrutura parecida com projetos profissionais.
Em outro artigo, dá pra mostrar como começar a organizar controllers, services e até montar um mini MVC em cima dessa estrutura.