Novidades Laravel 5.2
Já fazem algumas semanas que foi feito lançamento oficial do Laravel 5.2. Atualmente faço uso da versão 5.1 na maioria dos projetos, seguindo alguns desenvolvidos em 4.
Nova versão do laravel veio com novidades bem interessantes, irei listar a maioria delas e cases de uso.
Mult-Driver Auth
Primeira novidade que me chamou bastante atenção é camada de autenticação nativa agora dar possibilidade de uso de mult-drivers. Apenas alterando configuração do auth você fornece os models de camada de driver para aquela autenticação, possibilitando a criação de diversos drivers.
Desta forma é possível “repartir” a autenticação do ACL da aplicação, como por exemplo ter uma tabela para usuários e administradores distintas.
E com esta implementação junto com midd group é possível criar rotas específicas para requisições em API. Quem nunca teve o problema de escrever uma API e nas rotas dela os drivers de sessions/cookie são ligados sem necessidade?
P.S: Nesta nova versão foi retornado o auth scaffolding que muitos pediram, para criar-lo basta apenas rodar o comando:
php artisan make:auth
Maiores informações: https://laravel.com/docs/5.2/authentication#adding-custom-guards
Implicit Model Binding
Esta funcionalidade é bem interessante, ao meu ver para regras de rota. Ela se baseia ao definir um Model para rota acessada, passando o parâmetro da URI.
Vamos ao exemplo:
Route::get('news/{slug}', function ($slug) {
// News::whereSlug($slug)...
// Do stuff
});
Neste código estamos definindo que a new acessada seja válida, caso não irá retornar a Exception.
No model bind fica mais “clean” a implementação
Route::get('news/{slug}', function (App\News $slug) {
// Do stuff
});
Para definir qual coluna será usada para o bind, basta sobrescrever o método no model:
class News extends Model
{
public function getRouteKeyName()
{
return 'slug';
}
}
Appending output from scheduled tasks
O output de agendamento de tarefas agora podem ser registrados em arquivos.
$schedule->command('emails:send')
->hourly()
->appendOutputTo($filePath);
Form Array Validation
Esta funcionalidade de wildcard eu achei sensacional, ela facilita ao impor regras de validações para input arrays.
$v = Validator::make($request->all(), [
'news.*.id' => 'exists:news.id',
]);
Database Session Driver
Foram adicionadas algumas informações pertinentes a session: user_id and ip_address. Dessa forma será possível efetuar manutenções na camada de sessions de cada usuário.
Middleware Groups
Algo que me chamou atenção também foi esta funcionalidade, antes era possível registrar as midd. individualmente, deixando um pouco a deseja quanto a “facilidade” de uso. Agora é possível gerar grupos de midd para as rotas e utilizar com facilidade.
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'api' => [
'throttle:60,1',
'auth:api',
],
];
Rate Limiting
Esta funcionalidade é para limitar a quantidade de requisições dentro de um curto período em rotas. Por exemplo para evitar spam ou clickbots ou sobrecarga em API, você poderá limitar: 60 visitas por minuto
Route::get('/api/users', ['middleware' => 'throttle:60,1', function () {
//
}]);
Nesta versão foi implementada colunas do tipo JSON, qual tem crescido o seu uso diário. Gabriel reclamou disso a pouco tempo.
PHP 5.6.4+
Since PHP 5.5 will enter “end of life” in June and will no longer receive security updates from the PHP development team, Laravel 5.3 requires PHP 5.6.4 or greater. If you require PHP 5.5 support, please see our 5.1 LTS series.
Vale lembrar que a versão das próximas versões irão requisitar PHP >=5.6. Então se seu servidor de produção não da suporte ainda, faça uma pressão neles!
Considerações
De longe me parece ser uma ótima versão com ótimas funcionalidade. Porém é preciso se prender a um pequeno detalhe: LTS Version.
Conforme a politica do laravel, apenas a versão 5.1 é LTS, ou seja, com longa duração de suporte:
For LTS releases, such as Laravel 5.1, bug fixes are provided for 2 years and security fixes are provided for 3 years. These releases provide the longest window of support and maintenance.
For general releases, bug fixes are provided for 6 months and security fixes are provided for 1 year.
Então se você não quer arriscar em produção recomendo manter a versão 5.1 e aguardar sair próxima LTS.
O que acharam das novidades? De longe acredito o Laravel ter comunidade de FW mais forte e ativa, e vocês?
Cya.