Demorou dez anos para o lançamento do PHP 7 e agora em menos cinco anos já temos a versão 8 disponível! Parece que a comunidade PHP está correndo atrás do prejuízo e retomando a vanguarda da web. 

As comunidades dos frameworks PHP também seguiram esse fluxo acelerado de atualização. É só olhar a timeline do PHP para perceber como aumentou o volume de atualizações de 2015 (quando foi lançado o PHP 7) até hoje.

E pra nós, pobres mortais, está ficando cada vez mais difícil acompanhar esse ritmo. Quando comecei a estudar e entender o CakePHP 3, já lançaram o 4. Me forçando a abortar o processo de migração dos apps de CakePHP 2 para o CakePHP 3.

Mas agora não dá mais pra adiar essa migração. A evolução do CakePHP 2 para o CakePHP 4 é gigantesca! Arrisco a dizer que é praticamente outro framework. E com ela ganhamos todos os benefícios do PHP 7. Ou migramos agora, ou morremos na praia!

Se você está nessa situação também, onde teve que assistir (passivo) o seu próprio atropelamento pelas novas atualizações de PHP e do CakePHP, com as duas mãos e cérebro amarrados no Backlog de estórias infinitas dos clientes. Esse post é pra você!

Por que reescrever a aplicação é a melhor opção?

Existem ferramentas para realizar a migração automatizada dos apps. Mas é recomendado que faça primeiro a migração do CakePHP 2 para o 3 e depois utilize outra ferramenta para migrar do CakePHP 3 para o 4.

Pode ser um caminho mais rápido usar essas ferramentas, principalmente se você tem apps pequenas. Mas na minha opinião, não vejo muito vantagem utilizá-las. O que eu senti tentando utilizá-las é que alguns ajustes ainda teriam que ser necessários realizar manualmente.

Também houve uma mudança muito grande principalmente na camada Model. E realizar a migração manualmente me forçou a tomar decisões de design de sistema que com certeza a ferramenta não seria capaz de realizar.

Além de ser uma ótima oportunidade de se familiarizar com a nova versão do framework e eliminar a curva de aprendizado para os novos projetos que virão.

Por isso eu criei esse roteiro para servir como orientação para a migração dos meus sistemas, assim eu e minha equipe mantemos o alinhamento e troca de experiências. De cara já aviso que não é nada mágico e nem rápido. Exige atenção, tempo e uma boa dose de cafeína no sangue.

Este roteiro funciona bem pra mim, e para o tipo de aplicação do meu legado. Talvez para o seu caso e da sua aplicação, estratégias diferentes devam ser consideradas. Mas se você gosta de “sofrer” como eu, vá em frente!

Roteiro de Migração de aplicações CakePHP 2 para CakePHP 4.

Eu vou utilizar como exemplo um projeto que criei pra treinamento da minha equipe a um tempo atrás. É um projeto bem simples, basicamente tem um login para a autenticação de usuários, alguns CRUDs onde o usuário pode incluir, alterar, excluir e consultar registros. Também tem uma impressão de relatórios em PDF. Esse projeto também está usando o Bootstrap como UI.

Deixei disponível no meu github, tanto a versão do CakePHP 2 quanto o branch para Migração do CakePHP 4. E vamos ao roteiro:

1 – Criar um novo projeto do CakePHP 4.

2 – Migrar as Views (Layout, Index, Add, Edit, View, Elements e Helpers)

3 – Migrar os Controllers (AppController, Components, Plugins)

4 – Migrar os Models (Fixtures, Tests e Models)

5 – Instalar os Plugins de Autenticação e Autorização

Para facilitar eu criei um playlist com os vídeos explicando cada uma das etapas, começando com esse primeiro vídeo: