<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Evandro Fonseca Junior</title>
    <description>The latest articles on Forem by Evandro Fonseca Junior (@truuta).</description>
    <link>https://forem.com/truuta</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1059744%2F7e819104-4432-46f5-aedc-c90f7fb21b93.jpeg</url>
      <title>Forem: Evandro Fonseca Junior</title>
      <link>https://forem.com/truuta</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/truuta"/>
    <language>en</language>
    <item>
      <title>CHEAT SHEET COMPLETO LARAVEL 10 PTBR</title>
      <dc:creator>Evandro Fonseca Junior</dc:creator>
      <pubDate>Fri, 19 May 2023 17:41:02 +0000</pubDate>
      <link>https://forem.com/truuta/cheat-sheet-completo-laravel-10-ptbr-3dck</link>
      <guid>https://forem.com/truuta/cheat-sheet-completo-laravel-10-ptbr-3dck</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?

// Rotas básicas
Route::get('/rota', 'Controller@metodo');
Route::post('/rota', 'Controller@metodo');
Route::put('/rota', 'Controller@metodo');
Route::delete('/rota', 'Controller@metodo');

// Rotas com parâmetros
Route::get('/rota/{param}', 'Controller@metodo');

// Parâmetros opcionais
Route::get('/rota/{param?}', 'Controller@metodo');

// Restrições de parâmetros
Route::get('/rota/{param}', 'Controller@metodo')-&amp;gt;where('param', '[0-9]+');

// Rotas nomeadas
Route::get('/rota', 'Controller@metodo')-&amp;gt;name('nome.rota');

// Prefixo de grupo de rotas
Route::prefix('admin')-&amp;gt;group(function () {
    Route::get('/rota1', 'Controller@metodo1');
    Route::get('/rota2', 'Controller@metodo2');
});

// Middleware nas rotas
Route::get('/rota', 'Controller@metodo')-&amp;gt;middleware('auth');

// Middleware em grupo de rotas
Route::middleware(['auth'])-&amp;gt;group(function () {
    Route::get('/rota1', 'Controller@metodo1');
    Route::get('/rota2', 'Controller@metodo2');
});

// Prefixo e middleware em grupo de rotas
Route::prefix('admin')-&amp;gt;middleware('auth')-&amp;gt;group(function () {
    Route::get('/rota1', 'Controller@metodo1');
    Route::get('/rota2', 'Controller@metodo2');
});

// Rotas API com prefixo e versão
Route::prefix('api')-&amp;gt;version('v1')-&amp;gt;group(function () {
    Route::get('/rota1', 'Controller@metodo1');
    Route::get('/rota2', 'Controller@metodo2');
});

// Agrupamento de rotas para recursos RESTful
Route::resource('recurso', 'RecursoController');

// Rotas específicas de recursos RESTful
Route::get('/recurso/{id}/metodo', 'RecursoController@metodo');
Route::post('/recurso/{id}/metodo', 'RecursoController@metodo');
Route::put('/recurso/{id}/metodo', 'RecursoController@metodo');
Route::delete('/recurso/{id}/metodo', 'RecursoController@metodo');

// Rotas para recursos RESTful sem algumas ações
Route::resource('recurso', 'RecursoController')-&amp;gt;except(['create', 'edit']);

// Middleware para recursos RESTful
Route::resource('recurso', 'RecursoController')-&amp;gt;middleware('auth');

// Prefixo para recursos RESTful
Route::prefix('admin')-&amp;gt;group(function () {
    Route::resource('recurso', 'RecursoController');
});

// Rotas aninhadas
Route::prefix('pais/{id_pais}')-&amp;gt;group(function () {
    Route::get('/estado/{id_estado}', 'Controller@metodo');
    Route::get('/estado/{id_estado}/cidade/{id_cidade}', 'Controller@metodo');
});

// Closure como controlador
Route::get('/rota', function () {
    return 'Hello World!';
});

// Closure com parâmetro
Route::get('/rota/{param}', function ($param) {
    return "Parâmetro: " . $param;
});

// Redirecionamento de rota
Route::redirect('/rota1', '/rota2');

// Redirecionamento com código de status
Route::redirect('/rota1', '/rota2', 301);

// Redirecionamento para um nome de rota
Route::redirect('/rota1', route('nome.rota2'));

// View de rota
Route::view('/rota', 'nome_da_view');

// Grupos de middleware
Route::middleware(['middleware1', 'middleware2'])-&amp;gt;group(function () {
    Route::get('/rota1', 'Controller@metodo1');
    Route::get('/rota2', 'Controller@metodo2');
});






// Comandos básicos
php artisan list                    // Listar todos os comandos disponíveis
php artisan help nome_comando       // Obter ajuda para um comando específico

// Criação de arquivos e classes
php artisan make:model NomeModelo               // Criar um novo modelo
php artisan make:model NomeModelo -m            // Criar um novo modelo com uma migration
php artisan make:controller NomeControlador     // Criar um novo controlador
php artisan make:middleware NomeMiddleware     // Criar um novo middleware
php artisan make:seeder NomeSeeder               // Criar um novo seeder
php artisan make:factory NomeFactory             // Criar uma nova factory
php artisan make:resource NomeResource           // Criar uma nova resource
php artisan make:request NomeRequest             // Criar um novo request

// Migration
php artisan migrate                // Executar todas as migrations pendentes
php artisan migrate:install       // Criar a tabela de controle das migrations
php artisan migrate:rollback      // Reverter a última migration executada
php artisan migrate:reset         // Reverter todas as migrations executadas
php artisan migrate:refresh      // Reverter e executar todas as migrations novamente
php artisan migrate:status        // Verificar o status das migrations

// Seed
php artisan db:seed                  // Executar todos os seeders
php artisan db:seed --class=NomeSeeder    // Executar um seeder específico

// Rotas
php artisan route:list           // Listar todas as rotas registradas

// Tarefas em segundo plano (Jobs)
php artisan queue:work                 // Iniciar o worker da fila
php artisan queue:listen               // Escutar a fila para processar os jobs
php artisan queue:failed                // Listar os jobs que falharam
php artisan queue:retry ID               // Tentar novamente um job falhado
php artisan queue:forget ID             // Remover um job falhado da lista
php artisan queue:flush                  // Limpar todos os jobs falhados

// Cache
php artisan cache:clear            // Limpar o cache
php artisan config:cache           // Limpar e recompilar as configurações
php artisan route:cache             // Limpar e recompilar as rotas

// Servidor de desenvolvimento
php artisan serve                  // Iniciar o servidor de desenvolvimento

// Tinker (REPL)
php artisan tinker                // Iniciar o console interativo Tinker

// Testes
php artisan test                   // Executar os testes

// Gerar chave de aplicativo
php artisan key:generate        // Gerar uma nova chave de aplicativo

// Outros comandos úteis
php artisan optimize              // Otimizar a aplicação para melhor desempenho
php artisan down                   // Colocar a aplicação em modo de manutenção
php artisan up                       // Desativar o modo de manutenção



//Eloquent ORM
// Definindo um modelo
class UserModel extends Model {
    protected $table = 'users';        // Nome da tabela
    protected $primaryKey = 'id';      // Chave primária
    protected $fillable = ['name', 'email', 'password'];   // Colunas preenchíveis em massa
    protected $guarded = ['id'];       // Colunas protegidas contra atribuição em massa
    public $timestamps = true;         // Utilizar timestamps
}

// Consultas básicas
$user = User::find($id);               // Buscar um registro pelo ID
$users = User::all();                  // Buscar todos os registros
$users = User::where('name', 'John')-&amp;gt;get();    // Buscar registros com uma condição
$user = User::first();                 // Buscar o primeiro registro
$user = User::orderBy('name', 'asc')-&amp;gt;first();   // Buscar o primeiro registro ordenado
$count = User::count();                // Contar o número de registros

// Consultas avançadas
$users = User::where('votes', '&amp;gt;', 100)-&amp;gt;orWhere('name', 'John')-&amp;gt;get();   // Condições combinadas
$users = User::whereBetween('votes', [1, 100])-&amp;gt;get();   // Buscar registros com valor entre um intervalo
$users = User::whereIn('id', [1, 2, 3])-&amp;gt;get();   // Buscar registros com valores em uma lista
$users = User::whereNull('updated_at')-&amp;gt;get();   // Buscar registros onde um campo é nulo
$users = User::whereNotNull('updated_at')-&amp;gt;get();   // Buscar registros onde um campo não é nulo

// Inserção de registros
$user = new User;
$user-&amp;gt;name = 'John';
$user-&amp;gt;email = 'john@example.com';
$user-&amp;gt;save();

// Atualização de registros
$user = User::find($id);
$user-&amp;gt;name = 'John Doe';
$user-&amp;gt;save();

// Exclusão de registros
$user = User::find($id);
$user-&amp;gt;delete();

// Relacionamentos
class User extends Model {
    public function posts() {
        return $this-&amp;gt;hasMany(Post::class);
    }
}

class Post extends Model {
    public function user() {
        return $this-&amp;gt;belongsTo(User::class);
    }
}

$user = User::find($id);
$posts = $user-&amp;gt;posts;                 // Obter os posts relacionados de um usuário

$post = Post::find($id);
$user = $post-&amp;gt;user;                   // Obter o usuário relacionado a um post

// Consultas de relacionamento
$user = User::with('posts')-&amp;gt;find($id);   // Buscar um usuário com seus posts relacionados

// Consultas avançadas de relacionamento
$users = User::whereHas('posts', function ($query) {
    $query-&amp;gt;where('votes', '&amp;gt;', 100);
})-&amp;gt;get();   // Buscar usuários que têm posts com mais de 100 votos

// Ordenação de relacionamento
$user = User::with(['posts' =&amp;gt; function ($query) {
    $query-&amp;gt;orderBy('created_at', 'desc');
}])-&amp;gt;find($id);   // Buscar um usuário com seus posts relacionados ordenados


// Validação de Dados
$dadosValidados = $request-&amp;gt;validate([
    'campo1' =&amp;gt; 'required',
    'campo2' =&amp;gt; 'numeric',
]);

$regras = [
    'campo1' =&amp;gt; 'required',
    'campo2' =&amp;gt; 'numeric',
];
$mensagens = [
    'campo1.required' =&amp;gt; 'Campo 1 é obrigatório',
];
$dadosValidados = $request-&amp;gt;validate($regras, $mensagens);






{{-- Exibir uma seção em um template --}}
@yield('name')

{{-- Estender um layout --}}
@extends('layout.name')

{{-- Iniciar uma seção --}}
@section('name')
{{-- Conteúdo da seção --}}
@endsection

{{-- Finalizar uma seção e exibir o conteúdo --}}
@section('sidearg1')
@show

{{-- Exibir o conteúdo da seção pai --}}
@parent

{{-- Incluir uma view --}}
@include('view.name')

{{-- Incluir uma view com dados --}}
@include('view.name', array('key' =&amp;gt; 'value'))

{{-- Traduzir uma mensagem --}}
@lang('messages.name')

{{-- Traduzir uma mensagem com contagem --}}
@choice('messages.name', 1)

{{-- Estrutura condicional "if" --}}
@if(condition)
    {{-- Código --}}
@elseif(condition)
    {{-- Código --}}
@else
    {{-- Código --}}
@endif

{{-- Estrutura condicional "unless" --}}
@unless(condition)
    {{-- Código --}}
@endunless

{{-- Loop "for" --}}
@for($i = 0; $i &amp;lt; $count; $i++)
    {{-- Código --}}
@endfor

{{-- Loop "foreach" --}}
@foreach($items as $item)
    {{-- Código --}}
@endforeach

{{-- Loop "while" --}}
@while(condition)
    {{-- Código --}}
@endwhile

{{-- Loop "forelse" --}}
@forelse($users as $user)
    {{-- Código --}}
@empty
    {{-- Código --}}
@endforelse

{{-- Exibir conteúdo --}}
{{ $var }}

{{-- Exibir conteúdo escapado --}}
{{{ $var }}}

{{-- Exibir conteúdo não escapado --}}
{!! $var !!}

{{-- Comentário Blade --}}
{{-- Conteúdo do comentário --}}

{{-- Exibir dados após verificar a existência --}}
{{ $name or 'Padrão' }}

{{-- Exibir texto bruto com chaves --}}
@{{ Isso não será processado pelo Blade }}

// Obter a URL completa da requisição atual
URL::full();

// Obter a URL atual
URL::current();

// Obter a URL anterior
URL::previous();

// Gerar uma URL para uma rota ou caminho específico
URL::to('arg/arg1', $parameters, $secure);

// Gerar uma URL para uma ação de um controlador
URL::action('UserController@item', ['id'=&amp;gt;123]);

// Precisa ser no namespace apropriado
URL::action('Auth\AuthController@logout');

// Gerar uma URL para um método de um controlador específico
URL::action('argController@method', $parameters, $absolute);

// Gerar uma URL para uma rota nomeada
URL::route('arg', $parameters, $absolute);

// Gerar uma URL segura
URL::secure('arg1/arg2', $parameters);

// Gerar o caminho para um recurso estático (CSS, JavaScript, imagens, etc.)
URL::asset('css/arg.css', $secure);

// Gerar o caminho para um recurso estático seguro (HTTPS)
URL::secureAsset('css/arg.css');

// Verificar se uma URL é válida
URL::isValidUrl('http://example.com');

// Obter a instância da requisição atual
URL::getRequest();

// Definir a instância da requisição atual
URL::setRequest($request);

// Registrar uma nova macro para o HTML
HTML::macro('name', function(){});

// Converter uma string HTML em entidades
HTML::entities($value);

// Converter entidades em caracteres HTML
HTML::decode($value);

// Gerar um link para um arquivo JavaScript
HTML::script($url, $attributes);

// Gerar um link para um arquivo CSS
HTML::style($url, $attributes);

// Gerar um elemento de imagem HTML
HTML::image($url, $alt, $attributes);

// Gerar um link HTML
HTML::link($url, 'title', $attributes, $secure);

// Gerar um link HTML seguro (HTTPS)
HTML::secureLink($url, 'title', $attributes);

// Gerar um link HTML para um recurso estático
HTML::linkAsset($url, 'title', $attributes, $secure);

// Gerar um link HTML seguro (HTTPS) para um recurso estático
HTML::linkSecureAsset($url, 'title', $attributes);

// Gerar um link HTML para uma rota nomeada
HTML::linkRoute($name, 'title', $parameters, $attributes);

// Gerar um link HTML para uma ação de um controlador
HTML::linkAction($action, 'title', $parameters, $attributes);

// Gerar um link HTML para um endereço de e-mail
HTML::mailto($email, 'title', $attributes);

// Ofuscar um endereço de e-mail para evitar spam-bots
HTML::email($email);

// Gerar uma lista ordenada de itens
HTML::ol($list, $attributes);

// Gerar uma lista não ordenada de itens
HTML::ul($list, $attributes);

// Criar um elemento HTML de lista
HTML::listing($type, $list, $attributes);

// Criar o HTML para um elemento de lista aninhado
HTML::listingElement($key, $type, $value);

// Criar o HTML para um atributo aninhado em uma lista
HTML::nestedListing($key, $type, $value);

// Construir uma string de atributos HTML a partir de um array
HTML::attributes($attributes);

// Construir um elemento de atributo HTML único
HTML::attributeElement($key, $value);

// Ofuscar uma string para evitar spam-bots
HTML::obfuscate($value);


// Restaurar os registros excluídos logicamente (soft deletes) que atendem à condição
Model::withTrashed()-&amp;gt;where('users', 2)-&amp;gt;restore();

// Excluir permanentemente os registros que atendem à condição, mesmo que sejam soft deletes
Model::where('users', 2)-&amp;gt;forceDelete();

// Forçar o conjunto de resultados a incluir apenas registros excluídos logicamente (soft deletes)
Model::onlyTrashed()-&amp;gt;where('users', 2)-&amp;gt;get();

// Eventos do Modelo (Model Events)

// Evento disparado antes de criar um novo modelo
Model::creating(function($model){});

// Evento disparado depois de criar um novo modelo
Model::created(function($model){});

// Evento disparado antes de atualizar um modelo existente
Model::updating(function($model){});

// Evento disparado depois de atualizar um modelo existente
Model::updated(function($model){});

// Evento disparado antes de salvar um modelo (inserir ou atualizar)
Model::saving(function($model){});

// Evento disparado depois de salvar um modelo (inserir ou atualizar)
Model::saved(function($model){});

// Evento disparado antes de excluir um modelo
Model::deleting(function($model){});

// Evento disparado depois de excluir um modelo
Model::deleted(function($model){});

// Observar um modelo com um observador personalizado (argObserver)
Model::observe(new argObserver);

// Joins no Laravel

// Join Statement
DB::table('users')
    -&amp;gt;join('contacts', 'users.id', '=', 'contacts.user_id') // Realiza um join entre as tabelas 'users' e 'contacts' usando a coluna 'id' da tabela 'users' e 'user_id' da tabela 'contacts'
    -&amp;gt;join('orders', 'users.id', '=', 'orders.user_id') // Realiza um join entre as tabelas 'users' e 'orders' usando a coluna 'id' da tabela 'users' e 'user_id' da tabela 'orders'
    -&amp;gt;select('users.id', 'contacts.phone', 'orders.price') // Seleciona as colunas 'users.id', 'contacts.phone' e 'orders.price'
    -&amp;gt;get(); // Executa a consulta e retorna os resultados

// Left Join Statement
DB::table('users')
    -&amp;gt;leftJoin('posts', 'users.id', '=', 'posts.user_id') // Realiza um left join entre as tabelas 'users' e 'posts' usando a coluna 'id' da tabela 'users' e 'user_id' da tabela 'posts'
    -&amp;gt;get(); // Executa a consulta e retorna os resultados

// Consulta com condições e agrupamento
DB::table('users')
    -&amp;gt;where('name', '=', 'John') // Condição: coluna 'name' deve ser igual a 'John'
    -&amp;gt;orWhere(function ($query) {
        $query-&amp;gt;where('votes', '&amp;gt;', 100) // Condição aninhada: coluna 'votes' deve ser maior que 100
            -&amp;gt;where('title', '&amp;lt;&amp;gt;', 'Admin'); // Condição aninhada: coluna 'title' deve ser diferente de 'Admin'
    })
    -&amp;gt;get(); // Executa a consulta e retorna os resultados


// Agregações
$users = DB::table('game')-&amp;gt;count(); // Conta o número de registros na tabela 'game'
$price = DB::table('game')-&amp;gt;max('points'); // Retorna o valor máximo da coluna 'points' na tabela 'game'
$price = DB::table('game')-&amp;gt;min('points'); // Retorna o valor mínimo da coluna 'points' na tabela 'game'
$price = DB::table('game')-&amp;gt;avg('points'); // Retorna a média dos valores da coluna 'points' na tabela 'game'
$total = DB::table('game')-&amp;gt;sum('points'); // Retorna a soma dos valores da coluna 'points' na tabela 'game'

// Expressões Raw
DB::table('name')-&amp;gt;remember(5)-&amp;gt;get(); // Recupera os registros da tabela 'name' e os armazena em cache por 5 minutos
DB::table('name')-&amp;gt;remember(5, 'cache-key-name')-&amp;gt;get(); // Recupera os registros da tabela 'name' e os armazena em cache com uma chave personalizada por 5 minutos
DB::table('name')-&amp;gt;cacheTags('my-key')-&amp;gt;remember(5)-&amp;gt;get(); // Recupera os registros da tabela 'name' e os armazena em cache com uma tag específica por 5 minutos
DB::table('name')-&amp;gt;cacheTags(['my-first-key', 'my-second-key'])-&amp;gt;remember(5)-&amp;gt;get(); // Recupera os registros da tabela 'name' e os armazena em cache com várias tags por 5 minutos

$users = DB::table('users')
    -&amp;gt;select(DB::raw('count(*) as user_count, status'))
    -&amp;gt;where('status', '&amp;lt;&amp;gt;', 1)
    -&amp;gt;groupBy('status')
    -&amp;gt;get(); // Seleciona o número de registros e o status da tabela 'users', agrupados por status, onde o status não é igual a 1

// Consultas com SQL puro
DB::select('SELECT * FROM users WHERE id = ?', [value]); // Executa uma consulta SQL personalizada com um parâmetro

// Inserções, atualizações, exclusões e unions

// Inserção
DB::table('users')-&amp;gt;insert([
    'email' =&amp;gt; 'email@host.com',
    'votes' =&amp;gt; 0
]); // Insere um novo registro na tabela 'users' com os valores especificados

$id = DB::table('users')-&amp;gt;insertGetId([
    'email' =&amp;gt; 'email@host.com',
    'votes' =&amp;gt; 0
]); // Insere um novo registro na tabela 'users' e retorna o ID gerado

DB::table('users')-&amp;gt;insert([
    ['email' =&amp;gt; 'email1@host.com', 'votes' =&amp;gt; 0],
    ['email' =&amp;gt; 'email2@host.com', 'votes' =&amp;gt; 0]
]); // Insere vários registros na tabela 'users'

// Atualização
DB::table('users')
    -&amp;gt;where('id', 1)
    -&amp;gt;update(['votes' =&amp;gt; 1]); // Atualiza os registros na tabela 'users' onde o ID é igual a 1, definindo o valor da coluna 'votes' como 1

DB::table('users')-&amp;gt;increment('votes'); // Incrementa o valor da coluna 'votes' em 1 para todos os registros da tabela 'users'
DB::table('users')-&amp;gt;increment('votes', 5); // Incrementa o valor da coluna 'votes' em 5 para todos os registros da tabela 'users'
DB::table('users')-&amp;gt;decrement('votes'); // Decrementa o valor da coluna 'votes' em 1 para todos os registros da tabela 'users'
DB::table('users')-&amp;gt;decrement('votes', 5); // Decrementa o valor da coluna 'votes' em 5 para todos os registros da tabela 'users'
DB::table('users')-&amp;gt;increment('votes', 1, ['name' =&amp;gt; 'Name']); // Incrementa o valor da coluna 'votes' em 1 e atualiza o valor da coluna 'name' para 'Name' para todos os registros da tabela 'users'

// Exclusão
DB::table('users')-&amp;gt;where('votes', '&amp;lt;', 100)-&amp;gt;delete(); // Exclui os registros da tabela 'users' onde o valor da coluna 'votes' é menor que 100
DB::table('users')-&amp;gt;delete(); // Exclui todos os registros da tabela 'users'
DB::table('users')-&amp;gt;truncate(); // Esvazia a tabela 'users', excluindo todos os registros

// Union
$first = DB::table('users')-&amp;gt;whereNull('first_name'); // Seleciona os registros da tabela 'users' onde o valor da coluna 'first_name' é nulo
$users = DB::table('users')-&amp;gt;whereNull('last_name')-&amp;gt;union($first)-&amp;gt;get(); // Seleciona os registros da tabela 'users' onde o valor da coluna 'last_name' é nulo e une-os aos registros selecionados anteriormente

// Pessimistic Locking
DB::table('users')-&amp;gt;where('votes', '&amp;gt;', 100)-&amp;gt;sharedLock()-&amp;gt;get(); // Seleciona os registros da tabela 'users' onde o valor da coluna 'votes' é maior que 100 e adquire um bloqueio compartilhado
DB::table('users')-&amp;gt;where('votes', '&amp;gt;', 100)-&amp;gt;lockForUpdate()-&amp;gt;get(); // Seleciona os registros da tabela 'users' onde o valor da coluna 'votes' é maior que 100 e adquire um bloqueio exclusivo para atualização


// Laravel Auth

// Determine se o usuário atual está autenticado
Auth::check();

// Obtenha o usuário atualmente autenticado
Auth::user();

// Obtenha o ID do usuário atualmente autenticado
Auth::id();

// Tente autenticar um usuário usando as credenciais fornecidas
Auth::attempt(array('email' =&amp;gt; $email, 'password' =&amp;gt; $password));

// "Lembrar de mim" passando true para Auth::attempt()
Auth::attempt($credentials, true);

// Faça login apenas para uma única requisição
Auth::once($credentials);

// Faça login de um usuário na aplicação
Auth::login(User::find(1));

// Faça login com o ID de usuário fornecido na aplicação
Auth::loginUsingId(1);

// Faça logout do usuário na aplicação
Auth::logout();

// Valide as credenciais de um usuário
Auth::basic('username');

// Tente autenticar usando o HTTP Basic Auth
Auth::validate($credentials);

// Faça uma tentativa de login HTTP Basic sem estado
Auth::onceBasic();

// Envie um lembrete de senha para um usuário
Password::remind($credentials, function($message, $user){});

// Laravel Authorization

// Defina habilidades
Gate::define('update-post', 'Classe@método');
Gate::define('update-post', function ($user, $post) {...});

// Passando vários argumentos
Gate::define('delete-comment', function ($user, $post, $comment) {});

// Verifique habilidades
Gate::denies('update-post', $post);
Gate::allows('update-post', $post);
Gate::check('update-post', $post);

// Especificar um usuário para verificação
Gate::forUser($user)-&amp;gt;allows('update-post', $post);

// Através do modelo de usuário, usando o trait Authorizable
User::find(1)-&amp;gt;can('update-post', $post);
User::find(1)-&amp;gt;cannot('update-post', $post);

// Interceptando verificações de autorização
Gate::before(function ($user, $ability) {});
Gate::after(function ($user, $ability) {});

// Verificando em um template Blade
@can('update-post', $post)
@endcan
// com else
@else
@endcan

// Gerar uma Política
php artisan make:policy PostPolicy

// Função auxiliar `policy`
policy($post)-&amp;gt;update($user, $post)

// Autorização no Controller
$this-&amp;gt;authorize('update', $post);

// Para $user
$this-&amp;gt;authorizeForUser($user, 'update', $post);

// Paginação

// Paginação automática
Model::paginate(15);
Model::where('cars', 2)-&amp;gt;paginate(15);

// Somente "Próximo" e "Anterior"
Model::where('cars', 2)-&amp;gt;simplePaginate(15);

// Paginador manual
Paginator::make($items, $totalItems, $perPage);

// Imprimir navegadores de página na visualização
$variable-&amp;gt;links();

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>laravel</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>CHEAT SHEET PTBR PHP 8.1</title>
      <dc:creator>Evandro Fonseca Junior</dc:creator>
      <pubDate>Fri, 19 May 2023 17:40:13 +0000</pubDate>
      <link>https://forem.com/truuta/cheat-sheet-ptbr-php-81-3ec</link>
      <guid>https://forem.com/truuta/cheat-sheet-ptbr-php-81-3ec</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?php

// Declarando uma constante
const PI = 3.14159;

// Declarando uma variável
$nome = "João";

// Definindo tipos de retorno de função
function somar(int $a, int $b): int {
    return $a + $b;
}

// Estrutura condicional if-else
if ($idade &amp;gt;= 18) {
    echo "Você é maior de idade.";
} else {
    echo "Você é menor de idade.";
}

// Estrutura de repetição while
$i = 0;
while ($i &amp;lt; 10) {
    echo $i;
    $i++;
}

// Estrutura de repetição for
for ($i = 0; $i &amp;lt; 10; $i++) {
    echo $i;
}

// Função anônima (closure)
$saudacao = function ($nome) {
    echo "Olá, $nome!";
};

// Chamando a função anônima
$saudacao("Maria");

// Classes e objetos
class Pessoa {
    public $nome;
    private $idade;

    public function __construct($nome, $idade) {
        $this-&amp;gt;nome = $nome;
        $this-&amp;gt;idade = $idade;
    }

    public function getNome() {
        return $this-&amp;gt;nome;
    }

    public function getIdade() {
        return $this-&amp;gt;idade;
    }
}

// Instanciando um objeto
$pessoa = new Pessoa("João", 25);

// Chamando métodos do objeto
echo $pessoa-&amp;gt;getNome();
echo $pessoa-&amp;gt;getIdade();

// Tratamento de exceções
try {
    // Código que pode gerar uma exceção
    throw new Exception("Ocorreu um erro.");
} catch (Exception $e) {
    // Tratamento da exceção
    echo "Erro: " . $e-&amp;gt;getMessage();
}

// Incluindo um arquivo
include "arquivo.php";

// Usando namespaces
namespace MeuNamespace;

class MinhaClasse {
    // ...
}

// Importando um namespace
use MeuNamespace\MinhaClasse;

// Usando a classe importada
$objeto = new MinhaClasse();

// Expressões regulares
if (preg_match("/[0-9]+/", $texto)) {
    echo "O texto contém números.";
}

// JSON
$dados = '{"nome": "João", "idade": 30}';
$usuario = json_decode($dados);

echo $usuario-&amp;gt;nome;
echo $usuario-&amp;gt;idade;

// Manipulação de arrays
$frutas = ["maçã", "banana", "laranja"];

// Iterando um array
foreach ($frutas as $fruta) {
    echo $fruta;
}

// Adicionando elemento a um array
$frutas[] = "abacaxi";

// Verificando se uma chave existe em um array
if (isset($frutas[2])) {
    echo "A chave existe.";
}

// Funções de array
$quantidade = count($frutas);
$invertido = array_reverse($frutas);
$filtrado = array_filter($frutas, function ($fruta) {
    return strlen($fruta) &amp;gt; 5;
});
$ordenado = sort($frutas);

// Operadores de comparação
$a = 5;
$b = 10;

if ($a == $b) {
    echo "A é igual a B.";
} elseif ($a &amp;gt; $b) {
    echo "A é maior que B.";
} else {
    echo "A é menor que B.";
}

// Operadores lógicos
$condicao1 = true;
$condicao2 = false;

if ($condicao1 &amp;amp;&amp;amp; $condicao2) {
    echo "As duas condições são verdadeiras.";
}

if ($condicao1 || $condicao2) {
    echo "Pelo menos uma condição é verdadeira.";
}

if (!$condicao1) {
    echo "A condição 1 é falsa.";
}

// Manipulação de strings
$texto = "Olá, mundo!";
$tamanho = strlen($texto);
$maiusculo = strtoupper($texto);
$minusculo = strtolower($texto);
$substituido = str_replace("mundo", "amigo", $texto);
$partes = explode(", ", $texto);
$unido = implode("-", $partes);

?&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>php</category>
      <category>beginners</category>
      <category>cheatsheet</category>
      <category>braziliandevs</category>
    </item>
  </channel>
</rss>
