CI框架附属类用法分析


Posted in PHP onDecember 26, 2018

本文实例讲述了CI框架附属类用法。分享给大家供大家参考,具体如下:

有些时候,你可能想在你的控制器之外新建一些类,但同时又希望 这些类还能访问 CodeIgniter 的资源

任何在你的控制器方法中初始化的类都可以简单的通过 get_instance() 函数来访问 CodeIgniter 资源。这个函数返回一个 CodeIgniter 对象。

通常来说,调用 CodeIgniter 的方法需要使用 $this

$this->load->helper('url');
$this->load->library('session');
$this->config->item('base_url');

但是 $this 只能在你的控制器、模型或视图中使用,如果你想在 你自己的类中使用 CodeIgniter 类,你可以像下面这样做:

首先,将 CodeIgniter 对象赋值给一个变量:

$CI =& get_instance();

一旦你把 CodeIgniter 对象赋值给一个变量之后,你就可以使用这个变量 来 代替 $this

$CI =& get_instance();
$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');

如果你在类中使用``get_instance()`` 函数,最好的方法是将它赋值给 一个属性 ,这样你就不用在每个方法里都调用 get_instance() 了。

例如:

class Example {
  protected $CI;
  // We'll use a constructor, as you can't directly call a function
  // from a property definition.
  public function __construct()
  {
    // Assign the CodeIgniter super-object
    $this->CI =& get_instance();
  }
  public function foo()
  {
    $this->CI->load->helper('url');
    redirect();
  }
  public function bar()
  {
    $this->CI->config->item('base_url');
  }
}

在上面的例子中, foo()bar() 方法在初始化 Example 类之后都可以正常工作,而不需要在每个方法里都调用 get_instance() 函数。

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php smarty 二级分类代码和模版循环例子
Jun 16 PHP
Session保存到数据库的php类分享
Oct 24 PHP
如何判断php数组的维度
Jun 10 PHP
Window下PHP三种运行方式图文详解
Jun 11 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
Aug 20 PHP
php表单敏感字符过滤类
Dec 08 PHP
PHP中Enum(枚举)用法实例详解
Dec 07 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
简单解决微信文章图片防盗链问题
Dec 17 PHP
laravel migrate初学常见错误的解决方法
Oct 11 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 PHP
PHP如何开启Opcache功能提升程序处理效率
Apr 27 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 #PHP
CI框架实现创建自定义类库的方法
Dec 25 #PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 #PHP
PHP使用SOAP调用API操作示例
Dec 25 #PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 #PHP
PHP正则匹配到2个字符串之间的内容方法
Dec 24 #PHP
PHP基于PDO扩展操作mysql数据库示例
Dec 24 #PHP
You might like
如何开发一个虚拟域名系统
2006/10/09 PHP
菜鸟学PHP之Smarty入门
2007/01/04 PHP
php面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
jquery下json数组的操作实现代码
2010/08/09 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
vue中使用protobuf的过程记录
2018/10/26 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
利用soaplib搭建webservice详细步骤和实例代码
2013/11/20 Python
Python连接数据库学习之DB-API详解
2017/02/07 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
2017/07/20 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
django使用xadmin的全局配置详解
2019/11/15 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
外企C语言笔试题
2013/11/10 面试题
AJAX都有哪些有点和缺点
2012/11/03 面试题
最美乡村教师观后感
2015/06/11 职场文书
学校运动会简讯
2015/07/20 职场文书
python Polars库的使用简介
2021/04/21 Python
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS