CI“超级对象”的工作原理

CI构建一个“超级对象”:它把你的整个程序当作一个大的对象。

当你开始运行CI程序的时候,将发生一连串复杂的事件。如果你设定你的CI允许记录日志,你将会见到类似下面这样的内容:



在启动时—每当通过Internet接收到一个页面请求—CI都执行相同的程序。你可以通过CI的文件来跟踪日志:

  1. index.php文件收到一个页面请求。URL指出哪一个控制器被调用,如果没有,CI有一个默认控制器(第2行)。Index.php开始一些基本检查然后调用codeigniter.php文件(\codeigniter\ codeigniter.php)。
  2. codeigniter.php文件实例化Config、Router、Input和URL(等等)类。(第1行和3-9行)这些被调用的叫做“基础”类:你很少直接与它们交互,但是CI做的每件事都与它们有关。
  3. codeigniter.php 检测它正在使用的PHP版本,根据版本决定调用Base4还是Base5(/codeigniter/base4(或5).php)。然后创建一个“singleton”实例:即一个类只能有一个实例。并且都有一个公共的 &get_instance() 方法。注意符号 &:这是引用实例的符号。因此如果你调用 &get_instance() 方法,它产生类的单一实例。换句话说,整个应用中这个实例是唯一的,其中包含许许多多框架中其它类的实例。
  4. 在安全检查之后,codeigniter.php实例化被请求的控制器、或一个默认控制器(第10行)。新的类叫做 $CI。然后调用URL中指定的函数(或默认函数),类被实例化之后,相当于被唤醒了,实实在在的存在于内存中。然后,CI会实例化你需要的任何其他的类,并“include”你需要的功能脚本。因此,在上面的日志中,model类被实例化。(第16行)“boilerplate”脚本,也被装载(第13行),这是我编写的包含标准代码的一个文件。它是一个.php文件,保存在scripts目录中,但是它不是一个类:仅仅是一组函数。如果你正在写“纯粹的”PHP代码,你可能会使用“include”或者“require”把这个文件放进命名空间,CI会使用它自己的“装载”函数把它放入“超级对象”中。  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值