[codeigniter4]Upgrading from 3.x to 4.x
CodeIgniter 4 is a rewrite of the framework, and is not backwards compatible. It is more appropriate to think of converting your app, rather than upgrading it. Once you have done that, upgrading from one version of CodeIgniter 4 to the next will be straightforward.
The "lean, mean and simple" philosophy has been retained, but the implementation has a lot of differences, compared to CodeIgniter 3.
There is no 12-step checklist for upgrading. Instead, start with a copy of CodeIgniter 4 in a new project folder, however you wish to install and use it, and then convert and integrate your app components. We'll try to point out the most important considerations here.
Not all of the CI3 libraries have been ported or rewritten for CI4! See the threads in the CodeIgniter 4 Roadmap subforum for an uptodate list!
Do read the user guide before embarking on a project conversion!
Downloads
- CI4 is still available as a ready-to-run zip or tarball, which includes the user guide (though in the docs subfolder
- It can also be installed using Composer
Namespaces
- CI4 is built for PHP7.1+, and everything in the framework is namespaced, even the helpers
Application Structure
- The framework still has
applicationandsystemfolders, with the same interpretation as before - The framework now provides for a
publicfolder, intended as the document root for your app - There is also a
writablefolder, to hold cache data, logs, and session data - The
applicationfolder looks very similar to that for CI3, with some name changes, and some subfolders moved to thewritablefolder - There is no longer a nested
application/corefolder, as we have a different mechanism for extending framework components (see below)
Class loading
- There is no longer a CodeIgniter "superobject", with framework component references magically injected as properties of your controller
- Classes are instantiated where needed, and components are managed by
Services - The class loader automatically handles PSR4 style class locating, within the
App(application) andCodeIgniter(i.e. system) top level namespaces; with composer autoloading support, and even using educated guessing to find your models and libraries if they are in the right folder even though not namespaced - You can configure the class loading to support whatever application structure you are most comfortable with, including the "HMVC" style
Controllers
- Controllers extend CodeIgniterController instead of CI_Controller
- They don't use a constructor any more (to invoke CI "magic") unless that is part of a base controller you make
- CI provides
RequestandResponseobjects for you to work with - more powerful than the CI3-way - If you want a base controller (MY_Controller in CI3), make it where you like, e.g. BaseController extends Controller, and then have your controllers extend it
Models
- Models extend CodeIgniterModel instead of CI_Model
- The CI4 model has much more functionality, including automatic database connection, basic CRUD, in-model validation, and automatic pagination
- CI4 also has the
Entityclass you can build on, for richer data mapping to your database tables - Instead of CI3's
$this->load->model(x);, you would now use$this->x = new X();, following namespaced conventions for your component
Views
- Your views look much like before, but they are invoked differently ... instead of CI3's
$this->load->view(x);you can useecho view(x); - CI4 supports view "cells", to build your response in pieces
- The template parser is still there, but substantially enhanced
Libraries
- Your app classes can still go inside
application\Libraries, but they don't have to - Instead of CI3's
$this->load->library(x);you can now use$this->x = new X();, following namespaced conventions for your component
Helpers
- Helpers are pretty much the same as before, though some have been simplified
Extending the framework
- You don't need a
corefolder to holdMY_...framework component extensions or replacements - You don't need
MY_xclasses inside your libraries folder to extend or replace CI4 pieces - Make any such classes where you like, and add appropriate service methods in
application/Config/Services.phpto load your components instead of the default ones
[codeigniter4]Upgrading from 3.x to 4.x的更多相关文章
- VS2013: upgrading a Windows Phone 7/8 and Windows 8 apps(转)
VS2013: upgrading a Windows Phone 7/8 and Windows 8 apps September 17, 2013Windows 8, Windows PhoneJ ...
- Installation and Upgrading
Cumulative Feature Overview Identifies product features available to you when upgrading. This tool r ...
- Upgrading or Redeploying SharePoint 2010 Workflows
While creating several State Machine SharePoint 2010 workflows using visual studio for a client I ha ...
- Upgrading Applications
Upgrading Applications If you have an existing Zend Framework v2 application, and want to update it ...
- Pycharm 中You are using pip version 10.0.1, however version 18.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.
今天运行程序的时候出现了: You are using pip version 10.0.1, however version 18.1 is available.You should conside ...
- AIM Tech Round 4 (Div. 1) C - Upgrading Tree 构造 + 树的重心
C - Upgrading Tree 我发现我构造题好弱啊啊啊. 很明显能想到先找到重心, 然后我们的目标就是把所有点接到重心的儿子上,让重心的儿子子树变成菊花图, 这个先把重心到儿子的边连到 i , ...
- [转]Upgrading to Async with Entity Framework, MVC, OData AsyncEntitySetController, Kendo UI, Glimpse & Generic Unit of Work Repository Framework v2.0
本文转自:http://www.tuicool.com/articles/BBVr6z Thanks to everyone for allowing us to give back to the . ...
- Upgrading Elasticsearch
Upgrading Elasticsearch | Elasticsearch Reference [5.6] | Elastic https://www.elastic.co/guide/en/el ...
- 官方文档 Upgrading Elasticsearch
Upgrading Elasticsearch Before upgrading Elasticsearch: Consult the breaking changes docs. Use the E ...
随机推荐
- P2746 [USACO5.3]校园网Network of Schools [tarjan缩点]
题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”).注意即使 BB 在 AA 学校的分发列表中,AA 也不一定在 BB 学校的列表中. ...
- Jupyter Notebook 常用快捷键 (转)
Jupyter Notebook 有两种键盘输入模式. 编辑模式,允许你往单元中键入代码或文本:这时的单元框线是绿色的. 命令模式,键盘输入运行程序命令:这时的单元框线为蓝色. 命令模式 (按键 Es ...
- EasyUI笔记(四)菜单和按钮
本系列只列出一些常用的属性.事件或方法,具体完整知识请查看API文档 Menu(菜单) 菜单组件通常用于快捷菜单.他是构建其他菜单组件的必备基础组件.比如:menubutton和splitbutton ...
- Spring AOP-基于@AspectJ风格
关于Spring AOP,可以去看看官方文档: https://docs.spring.io/spring-framework/docs/current/spring-framework-refere ...
- 【python基础语法】元祖、字典、集合、数据类型的分类(第4天课堂笔记)
""" 列表:可变数据类型,对列表内部的元素可以进行修改 元祖: tuple,不可变数据类型,是不可以进行增删查改 元祖的方法: count 查找元素的数量 index ...
- 战“疫”背后的AI身影丨曼孚科技
近期新型冠状病毒肺炎的疫情,牵动着全国上下人民的心. 截止2月11日上午10点,全国确诊人数已达42708人,疑似病例21675人. 突发的疫情让部分地区的快速诊疗能力出现了结构性的缺失,为了打赢这场 ...
- XSY3163
题意 \(n\)阶无向图,带边权,边有黑白两色,问有多少棵白边恰好为\(k\)的树,边权最小 做法 先二分出给白边的附加权值,然后矩阵树讨论同权值块即可 题外话 乍一看好神仙,然后..
- CSS3之border-image的使用
最近,我在项目开发中遇到这样的问题. 要给这个tab的底部的蓝线左右加上圆角. 然而,这个元素实际如上图所示,只是active的时候加了个underline的类,蓝线并没有单独的html. 若给这个s ...
- js image to base64 摘录
//传入图片路径,返回base64 //用处,由于在新增时,使用的是base64的格式,为了统一,在编辑时,也将图片转为base64,以便于统一处理 /* 使用: 因为图像处理存在一定的延时,所以通过 ...
- CentOS 7 部署 Redis(单机版)
一.部署环境说明 软件 版本 安装包 CentOS 7.2 CentOS 7.2 Redis 4.0.14 redis-4.0.14.tar.gz 二.开始部署 安装gcc依赖 [root@bmsof ...