通过CodeIgniter快速开发Web应用(自定义类库)
来源:互联网 发布:速干运动短裤 淘宝 编辑:程序博客网 时间:2024/06/06 17:43
1、使用CI自带类库:
CI所有的系统类库都位于 system/libraries/ 目录下,使用时,只需在控制器中初始化:
$this->load->library('email'); //这里初始化了email类库
TIPS:可同时加载多个类库:
$this->load->library(array('email', 'validate'));
2、创建并使用自己的类库:
(1)、你的类库文件应该放置在 application/libraries 目录下,当你初始化类时,CodeIgniter 会在这个目录下寻找这些类。
(2)、命名:文件名首字母必须大写:Fake.php;类名:首字母必须大写且与文件名一致:class Fake{};
例子:
<?phpdefined('BASEPATH') OR exit('No direct script access allowed');class Fake{ public function getid() { }}
(3)、定义好了就开始使用:在你的 控制器 的任何方法中使用如下代码初始化你的类:
$this->load->library('fake'); //fake为你的类库文件名,但不包括.php
文件名可以写成首字母大写, 也可以写成全小写,CodeIgniter 都可以识别。
加载完类库后,你就可以使用小写字母名称来访问你的类:
$this->fake->getid();
(4)、初始化类时传入参数的用法:
加载类库时,使用第二个参数传递一个数组数据,数据将传到你的类的构造函数中,如:
$this->load->library('fake', ['数组','数据']);
如果你加了参数,那么你必须在类库的构造函数里加上参数:
<?php defined('BASEPATH') OR exit('No direct script access allowed');class Fake{ public function __construct($data) { //用你传过来的数据在构造函数里做点事 }}
(5)、在自己的类库中使用CI的资源:
首先在你的类库中使用 get_instance() 函数来访问 CodeIgniter 的原生资源,这个函数返回 CodeIgniter 超级对象。
但是 $this 只能在你的控制器、模型或视图中 直接使用,如果你想在你自己的类中使用 CodeIgniter 类,你可以像下面这样做:
$CI =& get_instance();$CI->load->helper('url');$CI->load->library('session');$CI->config->item('base_url');
上面的 get_instance() 函数通过引用来传递:$CI =& get_instance();
既然这样,我们可以直接创建成员来在我们的类库中全局调用CI的资源:
class Example_library { protected $CI; public function __construct() { $this->CI =& get_instance(); //构造方法中直接拿到原生资源,在该类的所有方法里均可使用 } public function foo() { $this->CI->load->helper('url'); redirect(); }}
以下为扩展,如果你想对原生类库做扩展,那么请继续阅读;
3、对原生类库的替换和扩展:
(6)、使用自己的类库替换原生类库:
将你的类文件名改为和原生的类库文件一致,CI就会使用它替换掉原生的类库。如:
class CI_Email { //TIPS:大多数CI的原生类都以CI作为开头}
问题来了,如何加载我的这个覆盖原生类库的类库?注意,此时这个类库已经被你替换成了原生类库,因此要使用可以直接加载原生类库的方法:
$this->load->library('email'); //TIPS:这里没有CI_,因为是以原生类库的方式加载
TIPS:注意数据库类不能被你自己的类替换掉。
(7)、扩展原生类库:只想扩展几个小功能,而并不想自己建一个类库(因为调用时加载写的代码太麻烦),也不想直接覆盖原生类库;
扩展需要做的前置工作:
- 类在定义时必须继承自父类。
- 新类名和文件名必须以 MY_ 为前缀。
扩展原生的 Email 类,新建一个文件命名为 application/libraries/MY_Email.php , 然后定义该类:
class MY_Email extends CI_Email { //继承}
application/config/config.php 文件, 找到这项:$config['subclass_prefix'] = 'MY_';
以上前置工作做好后即可使用扩展类库;
TIPS:如果你需要使用构造函数,那么必须保证你继承了父类(才能叫做扩展,否则原生类的功能无法使用);
class MY_Email extends CI_Email { public function __construct($config = []) { parent::__construct($config); }}
TIPS:并不是所有的类库构造函数的参数都是一样的,在对类库扩展之前 先看看它是怎么实现的。
加载扩展类(扩展类还是属于原生类的基础上扩展,因此加载方式与原生相同):
$this->load->library('email');
访问扩展类:$this->email->方法();
- 通过CodeIgniter快速开发Web应用(自定义类库)
- 通过CodeIgniter快速开发Web应用(一)
- 通过CodeIgniter快速开发Web应用(视图)
- 通过CodeIgniter快速开发Web应用(模型)
- 使用CodeIgniter框架快速开发PHP应用(四)
- 使用CodeIgniter框架快速开发PHP应用(一)(转载请保留出处)
- 使用CodeIgniter框架快速开发PHP应用(一)
- 使用 CodeIgniter 框架快速开发 PHP 应用(二)
- 使用 CodeIgniter 框架快速开发 PHP 应用(三)
- 使用CodeIgniter框架快速开发PHP应用(五)
- 使用CodeIgniter框架快速开发PHP应用(六)
- 使用CodeIgniter框架快速开发PHP应用(七)
- 使用CodeIgniter框架快速开发PHP应用(八)
- 使用 CI 简化数据库开发 《使用 CodeIgniter 框架快速开发 PHP 应用》
- CodeIgniter 应用开发笔记 - 1
- CodeIgniter 应用开发笔记 - 2
- CodeIgniter 应用开发笔记 - 3
- asp.net vs. jsf(web应用的快速开发)
- Learning Policies for Adaptive Tracking with Deep Feature Cascades
- MySQL存储过程:包含输入和输出
- filezilla server 服务器配置(包括账号密码)导出导入的方法
- [小程序开发] php开发 连mysql ,第二步
- 阅源-jdk8-FunctionalInterface注解package java.lang;
- 通过CodeIgniter快速开发Web应用(自定义类库)
- 提交表单前用JQ验证
- go run 启动main package中的多个文件
- 关于java 运行调试的快捷键
- yield from
- JN项目-如何修改jar里面的代码
- Servlet服务器和java Web的相关操作
- 数组中常用的方法
- vue.js学习