Codeigniter3学习笔记三(创建类库及使用原生类库)
创建类库和使用原生类库
1、存储位置
你的类库文件应该放置在 application/libraries 目录下,当你初始化类时,CodeIgniter 会在这个目录下寻找这些类
2、命名约定
- 文件名首字母必须大写,例如:Myclass.php
- 类名定义首字母必须大写,例如:class Myclass
- 类名和文件名必须一致
3、类文件原型
defined('BASEPATH') OR exit('No direct script access allowed');
class Myclass {public function some_method(){}
}
4、使用自定义类(控制器)
// 加载类
$this->load->library('myclass');
// 使用类方法
$this->myclass->some_method();
5、使用自定义类传参
$params = array('type' => 'large', 'color' => 'red');
$this->load->library('Myclass', $params);
defined('BASEPATH') OR exit('No direct script access allowed');
class Myclass {public function __construct($params){// Do something with $params}
}
6、自定义类中使用 CodeIgniter 资源
class Example_library
{protected $CI;public function __construct(){$this->CI =& get_instance();}public function foo(){$this->CI->load->helper('url');redirect();}public function bar(){echo $this->CI->config->item('base_url');}
}
(1)$this 只能在控制层、模型或视图中直接使用
(2)$CI =& get_instance(); 将 原始的 CodeIgniter 对象 赋值 给变量 $CI ,而不是创建一个副本
7、替换原生类库
// 替换原生的 Email 类 在 application/libraries/Email.php 创建
class CI_Email
{}
$this->load->library('email');
类库文件和类定义改成和原生的类库完全一样
注意大多数原生类都以 CI_ 开头
8、扩展原生类库
class My_Email extends CI_Email
{}
扩展一个类和替换一个类差不多,除了以下几点:
- 类在定义时必须继承自父类
- 你的新类名和文件名必须以 MY_ 为前缀 ( 可配置,见下文 )
如果在扩展原生类时需要使用构造函数,需确保你调用了父类的构造函数
class MY_Email extends CI_Email
{public function __construct($config = array()){parent::__construct($config);}
}
并不是所有的类库构造函数的参数都是一样的,在对类库扩展之前 先看看它是怎么实现的
加载扩展类
$this->load->library('email')
和平常调用原生库一样
9、设置自定义前缀
application/config/config.php
文件
$config['subclass_prefix'] = 'MY_';
请注意所有原始的 CodeIgniter 类库都以 CI_ 开头,所以请不要使用这个 作为你的自定义前缀
Codeigniter3学习笔记三(创建类库及使用原生类库)相关推荐
- openstack学习笔记三 创建第一个实例
登陆admin 创建一个基本网络 镜像 已经安装好操作系统的硬盘文件 计算--镜像--创建镜像 名称 centos7.2-1511 镜像源 镜像地址 镜像地址 http://mirror ...
- ROS学习笔记三:创建ROS软件包
,# ROS学习笔记三:创建ROS软件包 catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(man ...
- 【AngularJs学习笔记三】Grunt任务管理器
为什么80%的码农都做不了架构师?>>> #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...
- iView学习笔记(三):表格搜索,过滤及隐藏列操作
iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...
- spring学习笔记02-spring-bean创建的细节问题
spring学习笔记02-spring-bean创建的细节问题 三种创建Bean对象的方式 Bean的作用范围 Bean的生命周期 <?xml version="1.0" e ...
- Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装
扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...
- JavaScript学习笔记:创建、添加与删除节点
JavaScript学习笔记:创建.添加与删除节点 文章目录 JavaScript学习笔记:创建.添加与删除节点 一.DOM对象节点类型 二.创建节点 1.创建元素节点 2.创建文本节点 3.创建属性 ...
- Python学习笔记三之编程练习:循环、迭代器与函数
Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...
- python3常用模块_Python学习笔记三(常用模块)
Python 学习笔记三 (常用模块) 1.os模块 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果. os.name:返回当前操作系统名称( ...
- K8S 学习笔记三 核心技术 Helm nfs prometheus grafana 高可用集群部署 容器部署流程
K8S 学习笔记三 核心技术 2.13 Helm 2.13.1 Helm 引入 2.13.2 使用 Helm 可以解决哪些问题 2.13.3 Helm 概述 2.13.4 Helm 的 3 个重要概念 ...
最新文章
- tesseract-ocr3.02字符识别过程操作步骤
- 人工智能正在激活互联网类脑系统,2018年,云脑将成为新热点
- Jupyter notebook 运行环境创建和切换 (Win10+Anaconda)
- MongoDB系列:五、MongoDB Driver使用正确的姿势连接复制集
- z-blog php 静态设置,Nginx的Z-Blog的伪静态配置方法
- JavaScript学习总结(2)——JavaScript数据类型判断
- 深入浅出 Python Iterators 迭代器
- idea 中 配置tomcat 启动 jsp项目
- 一次让你搞懂Android应用签名
- linux系统发育树的构建步骤,步一步教你如何做系统进化树
- 同个网络找不到计算机打印机共享,局域网共享打印机搜索不到怎么办 局域网共享打印机搜索不到解决方法...
- 主动降噪python_主动降噪(Active Noise Control)
- 【学术相关】过来人对研究生阶段的学习建议
- 数论之费马大定理及怀尔斯的证明
- Linux 只查找两层备份目录文件大小
- VMware 笔试题目:猫和老鼠玩象棋
- 618啦,你的钱包又被盯上啦!
- Node.js 获取本机Mac地址
- spreadtrum展信平台加密Secure boot流程
- Linux进程的概念
热门文章
- 常用的DOS功能输入输出
- 51Nod 1182
- oracle和mysql数据实时同步_Canal 实现 Mysql数据库实时数据同步
- Wannafly挑战赛26 A B
- zencart手工备份mysql数据库_MySQL数据库镜像 / 实时备份Zen Cart数据库
- 服务器显示AL024是什么意思,云端时代云终端快速部署指南(S11AL).ppt
- mysql常见排错_mysql 一些排错技巧
- java可以用var定义吗_浅析java 10中的var关键字用法
- qq视频转码失败怎么办_qq影音为什么不能转码 进行视频转码方法
- linux 动态链接库 函数共享,LINUX动态链接库高级应用(etc/ld.so.conf)共享动态链接库...