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.