Novidades Laravel 5.2

Carlos Eduardo
3 min readFeb 12, 2016

--

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.

--

--

Carlos Eduardo
Carlos Eduardo

Written by Carlos Eduardo

Passionate about programming, tv series, movies, electronic music, entrepreneurship and a good guitar. Believes that all knowledge obtained can be divided.

No responses yet