TecnologiaUpgrade

Upgrade do Laravel 10 para o Laravel 11: Um guia passo a passo

O Laravel 11 foi lançado recentemente e traz consigo uma série de novos recursos e melhorias. Se você está usando o Laravel 10, pode estar pensando em atualizar seu projeto para a nova versão. Neste post, vamos guiá-lo pelo processo de upgrade, passo a passo.

Pré-requisitos

Antes de começar, você precisa ter o seguinte: Uma instalação do Laravel 10, Uma instalação do PHP 8.2 ou superior e o Composer atualizado.

Passo 1: Atualizar o Composer e verificar a versão do PHP

A primeira coisa que você precisa fazer é verificar se possui o PHP 8.2 ou superior se não tiver atualize seu PHP, depois, atualize o Composer para a versão mais recente. Você pode fazer isso executando os seguintes comando no terminal:

php -v
composer self-update

Link video: https://youtu.be/TRpIbV8vesE

Passo 2: Atualizar o Laravel Framework

Vamos seguir o guia da documentação, recomendo que verifique se os pacotes usados no seu sistema possuem uma atualização compatível com o Laravel 11, antes de realizar a atualização evitando problemas durante o processo.

Abra o arquivo composer.json para ter acesso as dependências e pacotes instalados no seu sistema.

Acesse a documentação para verificar todas as dependências. https://laravel.com/docs/11.x/upgrade#updating-dependencies

Veja o exemplo:

Depois de fazer essas alterações, execute o seguinte comando para atualizar as dependências:

composer update

verifique se foi atualizada a versão do Laravel usando o comando

php artisan --version

Problemas na Atualização do Laravel 10 para Laravel 11

Quando se tem vários pacotes instalados em um sistema o desafio e a tarefa de realizar o upgrade de do Laravel se torna uma tarefa que exigira uma atenção especial , paciência para verificar cada pacote.

Ao migrar do Laravel 10 para o 11, a névoa da incerteza paira sobre os pacotes de terceiros. Compatibilidade se torna uma palavra-chave, e a frustração, um risco constante.

Problemas Frequentes:

  • Pacotes Incompatíveis: O upgrade do Laravel pode incompatibilizar alguns pacotes. Prepare-se para a árdua tarefa de encontrar alternativas ou atualizar os pacotes manualmente.
  • Erros Misteriosos: Bugs misteriosos podem surgir durante a migração. Domine a arte da depuração para desvendar seus segredos.
  • Conflitos de Versões: A coexistência de diferentes versões do Laravel e de pacotes pode gerar conflitos. Mantenha a ordem e a organização para evitar o caos.

Desafios enfrentados e solucionados

Problema com o pacote “laravellegends/pt-br-validator”: “^10.0”

O Laravel 11 requer uma versão específica illuminate/support incompatível com sua versão atual do PHP (8.3.4). As versões 6 a 10 do Laravel também requerem illuminate/support versões que não são compatíveis com PHP 8.3.4. Isso cria um conflito porque tanto laravel/framework(o próprio Laravel) quanto laravellegends/pt-br-validator( ou um pacote que você está usando) dependem do illuminate/support, mas precisam de versões diferentes que não podem ser instaladas simultaneamente na sua versão atual do PHP.

Abra o composer.json e atualize ele para versão 11, salve e execute o comando: composer update

```json
 "require": {
     "laravellegends/pt-br-validator": "^11.0"
 }
 ```

A mesma solução pode ser aplicada aos pacotes que possuem uma atualização para o Laravel 11

Problema com illuminate/database

  - illuminate/database[v7.0.0, ..., v7.28.4] require php ^7.2.5 -> your php version (8.3.4) does not satisfy that requirement.
- illuminate/database[v8.0.0, ..., v8.11.2] require php ^7.3 -> your php version (8.3.4) does not satisfy that requirement.
- Conclusion: don't install doctrine/dbal 4.0.1 (conflict analysis result)

Para resolver esse conflito abra seu arquivo composer.json e remova a dependência do pacote doctrine/dbal e execute o comando: composer update, atente-se a documentação e ajuste seu sistema https://laravel.com/docs/11.x/upgrade#doctrine-dbal-removal.

Problema com Spatie/laravel-permission ao rodar o comando composer updade Laravel 10 para Laravel 11

illuminate/database[v10.42.0, v10.48.4] (conflict analysis result)
- spatie/laravel-permission[5.11.0, ..., v5.x-dev] require illuminate/database ^7.0|^8.0|^9.0|^10.0 -> satisfiable by illuminate/database[v7.0.0, ..., 7.x-dev, v8.0.0, ..., 8.x-dev, v9.0.0-beta.1, ..., 9.x-dev, v10.0.0, ..., 10.x-dev].

Para resolver esse conflito você pre atualizar o pacote, abra o seu arquivo composer.json e mude para ultima versão do pacote, na data desse post https://spatie.be/docs/laravel-permission/v6/upgrading, depois rode o comando: composer update

        "spatie/laravel-permission": "^6.0",

Problema com Pacote spatie/laravel-permission, Erro Target Class

\Spatie\Permission\Middlewares\namespace foi renomeado para \Spatie\Permission\Middleware\(singular). Atualize quaisquer referências a eles em suas /app/Http/Kernel.phprotas e em quaisquer rotas (ou classes importadas em seus arquivos de rotas) que tenham o namespace totalmente qualificado.

Apos solucionar os conflitos teste sua aplicação

Precisa de ajuda ? Fale conosco, comente seu problema ou sua dificuldade! se inscreva no blog, se o post te ajudou, clique em um dos anúncios da pagina. Compartilhe o post e diga como ele te ajudou.

Estamos trabalhando para melhorar nossos conteúdos, em breve um novo blog feito no Laravel.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *