Atualizando da versão 3.x para 4.x

Neste post vou abordar algumas questões referentes à atualização do CodeIgniter 3.x para a versão 4.x.

Pra começar, tenho uma notícia boa e uma ruim.

A boa é que: O CodeIgniter 4 foi totalmente reescrito.

E a ruim é: O CodeIgniter 4 e não é mais compatível com a versão 3.x.

Por isso, agora é mais apropriado você pensar em converter sua aplicação do que atualizá-la.

Uma vez que você tenha feito isto, atualizar de uma versão do CodeIgniter 4 para uma nova versão será mais simples e direta.

A filosofia “lean, mean and simple” em tradução direta: “leve, magro e simples”, foi mantida, mas as implementações têm muitas diferenças, se comparadas com o CodeIgniter 3.

Nem todas as bibliotecas do CI3 foram portadas ou reescritas para a o CI4!

Veja os tópicos no subfórum CodeIgniter 4 Roadmap para uma lista atualizada.

Não tenha preguiça e leia o guia do usuário antes de você embarcar em uma conversão do seu projeto.

Downloads

  • CI4 ainda está disponível com o modo de instalação ready-to-run em zip ou tarball, a qual inclui o guia do usuário (que agora está dentro da subpasta docs).
  • Ele também pode ser instalado usando Composer.

Namespaces

  • CI4 foi construído para o php7.2+ e tudo no framework usa namespaces, exceto os helpers.

Estrutura da Aplicação

  • O framework ainda possui as pastas app e system, com a mesma interpretação de antes.
  • O framework agora fornece uma pasta public, que tem a intenção de ser o document root da sua aplicação.
  • Há também uma pasta writable para gerenciar dados de cache, logs e dados de sessão.
  • A pasta application parece muito similar à do CI3, com algumas mudanças de nomes, e algumas subpastas foram movidas para a pasta writable.
  • Não há mais uma pasta application/core, já que agora existem mecanismos diferentes para estender os componentes do framework (Veja abaixo).

Carregamento de Classes

  • Não existe mais um “superobjeto”, get_instance() do CodeIgniter que magicamente injetava as propriedades no seu controller.
  • As classes serão instanciadas somente se forem necessárias, e os componentes são gerenciados por Services.
  • O carregamento das classes é feito segundo o estilo PSR-4, dentro do App (application) e o namespace de nível mais alto do CodeIgniter; com suporte ao autoloading do composer, e até mesmo usando um estilo menos agressivo de tentativa de localização dos models e libraries se eles estiverem na pasta correta mesmo se não estiverem usando namespaces.
  • Você pode configurar o suporte de carregamento da classes da maneira que for mais confortável para você, incluindo o estilo “HMVC”.

Controllers

  • Controllers agora estendem \CodeIgniter\Controller em vez de CI_Controller.
  • Os Models do CI4 agora possuem muito mais funcionalidades, incluindo conexão automática ao banco de dados, CRUD básico, validação direto no model e paginação automática.
  • O CI4 também possui uma classe Entity que você poderá usar para criar um mapeamento de dados mais rico para suas tabelas.
  • Em vez de usar $this->load->model(x) como era no CI3, agora você deverá usar: $this->x = new X(); seguindo a convenção usando namespaces para o seu componente.

Views

  • As Views se parecem bastante com as de antes, mas agora elas são chamadas de um jeito diferente. Em vez de $this->load->view(x) como era no CI3, agora você deve usar: echo view(x);
  • O CI4 suporta views “células”, para construir a sua página em pedaços.
  • O template parser ainda está lá, mas substancialmente melhorado.

Libraries

  • As suas classes ainda podem ficar em app/Libraries, mas não é obrigatório.
  • Em vez de usar: $this->load->library(x); como era no CI3, agora você deve usar $this->x = new X();, como recomenda a convenção de uso de namespaces para seu componente.

Helpers

  • Helpers estão exatamente como eram antes, porém alguns foram simplificados.

Estendendo o framework

  • Você não precisa uma pasta core para gerenciar o componente de extensão ou substituição MY_…
  • Você não precisa de classes do tipo MY_x dentro da sua pasta de libraries para estender ou substituir partes do CI4.
  • Crie suas classes do jeito que você precisar e insira os métodos de serviço apropriados em app/Config/Services.php para carregar seus componentes em vez dos componentes padrão.

Bom, este foi um apanhado geral sobre como fazer uma “atualização” do CI3 para o CI4.

Fique ligado no blog, vou começar a postar mais conteúdo sobre o CI4 com mais frequência.


Fonte:
https://codeigniter4.github.io/CodeIgniter4/installation/upgrade_4xx.html

Fábio.

Fábio S. Reszko

Sou Programador PHP desde 2006 e eu acredito sinceramente que programar usando um Framework PHP é a solução para os problemas de códigos desorganizados, difíceis de entender e de dar manutenção no futuro. Se você também acredita nisto, então fique à vontade em explorar meu blog.