最后更新于
最后更新于
A example project extends of CodeIgniter v3.x
要求php v5.4及以上版本。
下载最新版本代码,解压并进入目录。
运行下面的命令(需要安装有 composer ),安装依赖包和开发依赖包。
对 CodeIgniter 的目录稍作改动。
在 application/controllers 分成多个子目录,每个子目录是一个模块。
子目录下是控制器和它们的模板,所有控制器名称、文件(不含扩展名)都以 _page 结尾。
application 不再有 views 目录,只有 themes 目录,存放模板的公共布局文件。
开发环境的配置依然在 application/config/development 下
第一次务必修改 constants.php 中的网址和 database.php 中的数据库连接
设置好数据库连接后,回到安装目录(即 application 再往上一层目录),执行
自动生成所有表的 Model 文件,放入数据库连接为名的子目录中,并且关联对应 Mixin 。
按照 CodeIgniter 规范,访问网址会被对应到“模块/控制器/方法”上,但如果控制中含有
_remap() 方法,则直接执行它。
我们在基础控制器 application/core/MY_Controller.php 中,放置一个 _remap() ,
它的流程是这样:
每个控制有个 context 的属性,类型为 array 。
如果对应的方法是私有或者保护方法,直接返回 404 错误,当前请求结束。
首先执行 initialize() 方法,返回结果作为 context 一部分。同时在这个方法中获取与URL相关的属性,或检查当前用户的权限。
接着执行网址中对应的公开方法,查询数据库等操作在这里实现,其结果也是 context 的一部分。
最后执行 finalize()输出,会先找到对应模板文件,再用 context 中数据渲染模板。
在 application/controllers 中加入 demo 子目录来测试
创建 demo/Index_page.php 文件
当然事先需要设置好 application/models/mixins/User_Mixin.php 文件,
设置好上面文件后,要删除 User_model.php 文件,然后用 gen model 命令重新生成。
对于上面的查询来说 Role_Mixin.php 不是必须的,不过反向的关联需要。
特殊的自关联,即有些行是另一些行的 parent ,用特殊常量代替自身的 Model 名。
使用 Model 到 redis 的缓存,通常是 hash 数据结构。