CI的扩展机制
来源:互联网 发布:java执行vbs 编辑:程序博客网 时间:2024/06/06 09:25
在熟悉了CI的源码之后,它的简单明了的代码风格很有趣,这篇文章看看在CI是如何实现扩展的.
扩展包
扩展是为了完成特定的功能,在CI中,扩展包的开发只能在application/libraries
下.CI并没有对扩展进行任何限定,所以在CI开发扩展是不没有学习成本的.
扩展是与Controller通讯的,所以调用方式是这样:$this->load->library('newLibrary')
.可以查看CI中系统的library:一个扩展基本上只有一个类来完成,虽然用到了类,但并没有完全执行面向对象的中开发原则,仔细地看代码可以发现,这些类基本上都是面向过程的(面向对象与面向过程编程的核心区别在于职责的分配),也就只做了封装.从这一点可以看出来,library的目的只是为了实现CI的设计与架构目标.所以拒绝了复杂的面向对象.
所以,开发起来就只有一个需要注意的--尽量用一个类文件来完成
对系统进行扩展
CI是以简明著称,它所提供的功能足以满足使用该框架的需要,但特殊情况不可避免,有时候需对CI系统进行一点小小的改动,这时,就需要对该系统进行扩展了,如何解决?这一点CI已经为我们开放了接口--扩展框架核心
要能使用它所提供的功能,就需明白"钩子","挂钩点".
钩子
这个名称起的好,该名称很好的展现了在系统中"钩子"的作用.与在生活中的使用场景一样,钩子就是用来勾住东西的.在系统中一样,钩子用来勾住需要的类,用类做点什么,所以示例中是所展现的意思就很清晰了
$hook['pre_controller'][] = array('class' => 'MyClass','function' => 'MyMethod','filename' => 'Myclass.php','filepath' => 'hooks','params' => array('beer', 'wine', 'snacks'));
挂钩点
钩子必须要属于谁,就像一个鱼钩钓起来的鱼当然属于这个钓鱼的人了,所以系统的中"钩子"就属于"挂钩点",这样,我们就可以通过"挂钩点"使用这个钩子.
为什么要这样做? 在CI中,框架并大量没有运用面向对象,所以钩子这个概念是面向对象中观察者模式的一个非面向对象的实践.这个概念在wordpress中同样存在,同样wordpress也未大量使用面向对象.
总结
CI中的扩展分为以上两种,要理解起来并不难,熟悉熟悉它的代码风格就比较容易理解各部分的工作机制了.
- CI的扩展机制
- 【ci框架】扩展系统的核心类
- CI扩展CI_Exceptions
- 把ci框架的控制器放入孙文件夹,ci控制器多层文件夹中,ci框架扩展路由
- 【ci框架】源代码解读:利用Hook.php文件完成ci框架功能的扩展
- 【ci框架】自定义扩展的核心控制器类MY_Controller
- CI框架(二)自定义扩展的核心控制器类MY_Controller
- CodeIgniter学习笔记三:扩展CI的控制器、模型
- (笔记)使用扩展的CI框架实现RESTful框架
- CI调用机制
- CI框架源码阅读笔记9 CI的自动加载机制autoload
- CI框架源码阅读笔记9 CI的自动加载机制autoload
- CI扩展支持多级目录
- CI扩展service服务层
- CI memcached.php 兼容 memcache,memcached扩展
- (转载)解析Windows2000的IDT扩展机制
- 解析Windows2000的IDT扩展机制[转]
- 解析Windows2000的IDT扩展机制
- 变量类型和计算
- 2017第二次多校联合Regular polygon
- TypeError: 'module' object is not callable
- Java正则表达式
- JavaScript中闭包的应用
- CI的扩展机制
- 编程之外的修炼
- 画笔和画刷
- wifi数据传输APP操作小结
- POJ 1061 青蛙的约会
- QEMU调试Linux系统的USB协议栈
- 反射实例一
- C/C++传递方式
- Android ABI