Nesta dica vou reproduzir as informações da documentação do Laravel sobre como atualizar uma aplicação que esteja na versão 4.1 para a versão 4.2. Logo depois vou publicar mais um artigo mostrando como atualizar para a versão 5.0. Também vou comentar as atualizações necessárias para o tutorial Desenvolvendo com Laravel.
Documentação
Aqui está uma reprodução quase exata da documentação oficial sobre a atualização.
PHP 5.4 ou posterior
A versão 4.2 do Laravel precisa da versão 5.4.0 do PHP ou uma versão mais atual.
Padrão de Criptografia
Adicione uma nova opção no seu arquivo de configuração app/config/app.php. O valor desta opção deve ser MCRYPT_RIJNDAEL_256 se você quer manter a compatibilidade com os seus cookies atuais.
1 |
'cipher' => MCRYPT_RIJNDAEL_256 |
Essa configuração pode ser usada para controlar a codificação padrão para as funcionalidades de encriptação do Laravel. O padrão do Laravel 4.2 é na realidade o MCRYPT_RIJNDAEL_128 (AES), mas é necessário usar o MCRYPT_RIJNDAEL_256 por questões de compatibilidade com os cookies antigos. Caso você possa reiniciar os seus cookies sem problema, pode utilizar MCRYPT_RIJNDAEL_128.
Modelos com Soft Delete
O soft delete no Laravel 4.1 era implementado com uma flag $softDelete. Na versão 4.2 foi alterado para usar Traits. Portanto, se você usava a propriedade $softDelete, agora ela foi removida. É necessário utilizar o SoftDeletingTrait da seguinte maneira:
1 2 3 4 5 6 7 |
use Illuminate\Database\Eloquent\SoftDeletingTrait; class User extends Eloquent { use SoftDeletingTrait; protected $dates = ['deleted_at']; } |
Como você viu no código, também é necessário adicionar a coluna deleted_at manualmente na propriedade $dates.
Classes de View e Paginação
Se você utiliza diretamente as classes Illuminate\View\Environment ou Illuminate\Pagination\Environment, atualize essas referencias para Illuminate\View\Factory e Illuminate\Pagination\Factory.
Parâmetro Adicional na Paginação
Se você extendeu a classe Illuminate\Pagination\Presenter, a assinatura do método abstrato getPageLinkWrapper foi modificado para adicionar o argumento rel:
1 |
abstract public function getPageLinkWrapper($url, $page, $rel = null); |
Fila de Encriptação Iron.Io
Se você está usando o driver do Iron.io, você vai precisar adicionar uma nova opção no arquivo de configuração app/config/queue.php:
1 |
'encrypt' => true |
Caso Prático
Agora vamos para um caso prático, atualizado nosso aplicativo disponível em https://github.com/oscardias/desenvolvendo_com_laravel (esta é a versão antes da atualização). A primeira coisa que vamos fazer é atualizar nosso composer.json:
1 2 3 |
"require": { "laravel/framework": "4.2.*" }, |
Após atualizar o arquivo execute um composer update. Depois que o composer finalizar, abra o arquivo app/config/app.php e adicione o novo cipher depois da entrada key:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* |-------------------------------------------------------------------------- | Encryption Key |-------------------------------------------------------------------------- | | This key is used by the Illuminate encrypter service and should be set | to a random, 32 character string, otherwise these encrypted strings | will not be safe. Please do this before deploying an application! | */ 'key' => 'YourSecretKey!!!', 'cipher' => MCRYPT_RIJNDAEL_128, |
Como nós não usamos cookies para nada além de lembrar o login, podemos reiniciar estes cookies usando o novo cipher. E é só isso. O resto não é necessário na nossa aplicação.
Conclusão
Esta foi uma rápida reprodução da documentação do Laravel sobre como atualizar a versão 4.1 para 4.2. Também atualizamos o aplicativo do tutorial sobre desenvolvimento Laravel.