AGÊNCIA A7 SITES · DOCUMENTAÇÃO

Laravel Documentation

Guia prático para desenvolvimento de aplicações Laravel, organizado para consulta rápida durante nossos projetos.

Laravel 13.x PHP 8.3+ Guia A7
COMEÇANDO

Introdução ao Laravel

Laravel é um framework PHP para desenvolvimento de aplicações web que oferece uma estrutura organizada e diversas ferramentas para trabalhar com rotas, banco de dados, filas, cache, validação, autenticação, testes e muito mais.

Versão utilizada neste guia

Esta documentação é estruturada com base na linha Laravel 13.x.

ESTRUTURA

Estrutura do projeto

Um projeto Laravel possui diretórios com responsabilidades bem definidas.

app/

Código principal da aplicação.

bootstrap/

Inicialização do framework.

config/

Arquivos de configuração.

database/

Migrations, factories e seeders.

public/

Entrada pública da aplicação.

resources/

Views, CSS e JavaScript fonte.

routes/

Rotas da aplicação.

storage/

Logs, cache e arquivos gerados.

tests/

Testes automatizados.

vendor/

Dependências do Composer.

CONFIGURAÇÃO

Configuração da aplicação

As configurações específicas de cada ambiente devem ser armazenadas no arquivo .env.

.env
APP_NAME="Meu Projeto"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=meu_projeto
DB_USERNAME=root
DB_PASSWORD=
Nunca publique o arquivo .env.

Ele pode conter credenciais de banco, chaves, tokens e outras informações sensíveis.

CLI

Artisan

Artisan é a interface de linha de comando do Laravel.

Listar comandos php artisan list
Executar servidor php artisan serve
Listar rotas php artisan route:list
Limpar caches php artisan optimize:clear
FUNDAMENTOS

Rotas

Para páginas web, normalmente começamos utilizando:

routes/web.php

Rota simples

use Illuminate\Support\Facades\Route;

Route::get('/sobre', function () {
    return view('sobre');
});

Rota com Controller

use App\Http\Controllers\ClienteController;

Route::get(
    '/clientes',
    [ClienteController::class, 'index']
)->name('clientes.index');

Principais métodos HTTP

GET POST PUT PATCH DELETE
CONTROLLERS

Controllers

Controllers centralizam a lógica responsável por tratar uma requisição.

Criando um Controller

php artisan make:controller ClienteController

Exemplo

<?php

namespace App\Http\Controllers;

class ClienteController extends Controller
{
    public function index()
    {
        return view('clientes.index');
    }
}
HTTP

Request

O objeto Request fornece acesso aos dados enviados para a aplicação.

use Illuminate\Http\Request;

public function store(Request $request)
{
    $nome = $request->input('nome');
    $email = $request->input('email');
}
HTTP

Responses

Controllers podem retornar views, redirects, JSON e outros tipos de resposta HTTP.

return view('clientes.index');

return redirect()->route('clientes.index');

return response()->json([
    'success' => true,
]);
HTTP

Middleware

Middleware pode analisar ou modificar uma requisição antes dela chegar à lógica principal.

Route::middleware('auth')->group(function () {

    Route::get('/painel', function () {
        return view('painel');
    });

});
SEGURANÇA

Proteção CSRF

Formulários web que enviam dados devem utilizar o token CSRF do Laravel.

<form method="POST" action="/cliente">

    @csrf

    <input type="text" name="nome">

    <button type="submit">
        Salvar
    </button>

</form>
FRONTEND

Blade

Blade é o mecanismo de templates utilizado pelo Laravel.

Layout

@extends('layouts.app')

@section('title', 'Clientes')

@section('content')

    <h1>Clientes</h1>

@endsection

Condicionais

@if($cliente)

    {{ $cliente->nome }}

@else

    Cliente não encontrado.

@endif

Loop

@foreach($clientes as $cliente)

    <p>
        {{ $cliente->nome }}
    </p>

@endforeach

Includes

@include('components.navbar')

@include('components.footer')
FRONTEND

Vite

Vite é utilizado para processar e empacotar CSS e JavaScript da aplicação.

Desenvolvimento

npm install
npm run dev

Produção

npm run build

Carregando assets no layout

@vite([
    'resources/css/app.css',
    'resources/js/app.js'
])
FRONTEND

CSS e JavaScript

Uma organização simples mantém os assets separados por responsabilidade e facilita a manutenção.

resources/css/app.css

Arquivo principal de estilos.

resources/css/components/

Estilos reutilizáveis de componentes.

resources/css/pages/

Estilos específicos de páginas.

resources/js/app.js

Entrada principal do JavaScript.

Importando CSS

@import "./components/effects.css";
@import "./laravel.css";
@import "./laravel-install.css";
@import "./laravel-doc.css";

Importando JavaScript

import './components/effects.js';
import './components/laravel-doc.js';
DATABASE

Banco de Dados

Laravel suporta diferentes bancos de dados. Nos projetos A7 podemos configurar MySQL ou MariaDB através do arquivo .env.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=a7_projeto
DB_USERNAME=root
DB_PASSWORD=
DATABASE

Migrations

Migrations funcionam como versionamento da estrutura do banco.

Criar migration

php artisan make:migration create_clientes_table

Exemplo

Schema::create('clientes', function (Blueprint $table) {

    $table->id();

    $table->string('nome');

    $table->string('email')->unique();

    $table->timestamps();

});

Executar migrations

php artisan migrate

Status

php artisan migrate:status

Rollback

php artisan migrate:rollback
DATABASE

Models

Models representam entidades da aplicação e normalmente fazem a ligação com tabelas do banco.

php artisan make:model Cliente
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Cliente extends Model
{
    protected $fillable = [
        'nome',
        'email',
    ];
}
Atalho útil

Para criar Model e Migration juntos: php artisan make:model Cliente -m

DATABASE

Eloquent ORM

Eloquent permite trabalhar com registros através de Models e relacionamentos.

Buscar registros

$clientes = Cliente::all();

$cliente = Cliente::find(1);

$ativos = Cliente::where('ativo', true)->get();

Criar registro

Cliente::create([
    'nome' => 'Agência A7 Sites',
    'email' => 'contato@exemplo.com',
]);

Atualizar registro

$cliente = Cliente::findOrFail(1);

$cliente->update([
    'nome' => 'Novo nome',
]);

Excluir registro

$cliente = Cliente::findOrFail(1);

$cliente->delete();
DATABASE

Query Builder

Query Builder permite construir consultas ao banco utilizando uma interface fluente.

Buscar registros

use Illuminate\Support\Facades\DB;

$clientes = DB::table('clientes')->get();

Utilizando condições

$clientes = DB::table('clientes')
    ->where('ativo', true)
    ->orderBy('nome')
    ->get();

Buscar um registro

$cliente = DB::table('clientes')
    ->where('id', 1)
    ->first();

Inserir registro

DB::table('clientes')->insert([
    'nome' => 'Cliente Teste',
    'email' => 'cliente@exemplo.com',
]);
VALIDAÇÃO

Validation

Valide os dados recebidos antes de gravar ou processar informações da aplicação.

$validated = $request->validate([

    'nome' => [
        'required',
        'string',
        'max:255',
    ],

    'email' => [
        'required',
        'email',
    ],

]);
PERFORMANCE

Cache

Cache evita que informações caras de obter sejam processadas repetidamente.

use Illuminate\Support\Facades\Cache;

$clientes = Cache::remember(
    'clientes',
    600,
    function () {
        return Cliente::all();
    }
);

Remover item

Cache::forget('clientes');
PROCESSAMENTO

Jobs e Queues

Filas permitem executar tarefas fora da requisição principal.

Criar Job

php artisan make:job ProcessarPedido

Executar Worker

php artisan queue:work
EVENTOS

Events & Listeners

Eventos ajudam a desacoplar diferentes partes da aplicação.

php artisan make:event PedidoCriado

php artisan make:listener EnviarConfirmacao
EMAIL

Mail

Mailables organizam o envio de emails pela aplicação.

php artisan make:mail PedidoConfirmado
use Illuminate\Support\Facades\Mail;

Mail::to($cliente->email)
    ->send(new PedidoConfirmado());
NOTIFICAÇÕES

Notifications

O sistema de notificações pode utilizar diferentes canais dependendo da aplicação.

php artisan make:notification PedidoRecebido
AUTOMAÇÃO

Task Scheduling

O Scheduler permite programar tarefas recorrentes da aplicação de forma organizada.

Exemplo

use Illuminate\Support\Facades\Schedule;

Schedule::command('emails:send')
    ->daily();

Executar localmente

php artisan schedule:work
QUALIDADE

Testes

Laravel possui integração para criação e execução de testes automatizados.

Executar testes

php artisan test

Criar teste

php artisan make:test ClienteTest
DEBUG

Logs

Os logs da aplicação são armazenados normalmente em:

storage/logs/laravel.log

Linux / servidor

tail -f storage/logs/laravel.log

Gravar mensagem

use Illuminate\Support\Facades\Log;

Log::info('Processo iniciado');

Log::error('Ocorreu um erro');
PRODUÇÃO

Deployment

Em produção, a raiz pública do servidor deve apontar para o diretório public/.

Dependências PHP

composer install --no-dev --optimize-autoloader

Assets

npm install
npm run build

Banco de dados

php artisan migrate --force

Otimização

php artisan optimize
Produção

Nunca deixe APP_DEBUG=true em produção.

Durante manutenção

Para limpar caches compilados: php artisan optimize:clear

FONTE OFICIAL

Laravel Documentation

Este guia da A7 resume os assuntos mais utilizados no desenvolvimento diário. Para referências completas e APIs avançadas, utilize também a documentação oficial.

Abrir documentação oficial