你随便下个CI框架的源码都会看到很多的get_instance() 函数,这个函数是用来获取CI 的全局超级对象,CI 是单例模式的框架,所有全局有一个超级对象。因为只有一个实例,所以无论这个函数使用多少次都不会消耗资源的。一般来说,只有在helper或library中才使用get_instance。

以前我们都是这样用的:$this->load->library('session');

$this只作用在你自己的控制器、模型、视图中,如果你在自定义的类中也想使用CI的函数话,你就可以这样做:

//通过引用的方式赋给变量将使用原始的 CodeIgniter 对象

$ci = &get_instance();

//这样就可以使用ci的函数了

$ci->load->library('session');

以上是网上的,以下是自己遇到的:

-------------------------------------------------

超级全局变量还可以存储:类似这样:

$instance = &get_instance();
$router = $instance->router;
$page = strtolower($router->class . '/' . $router->method);

$auth = $instance->session->userdata('authorization');

$instance->data['user'] = $last;

ci get_instance()的更多相关文章

  1. *** $CI =& get_instance() 用法:关于CodeIgniter中get_instance() 函数

    使用场景: 注意 get_instance 的使用场景,这个方法并不是用在控制器中的.而是用在控制器外面,比如类库中,想操作 CI 超级对象的时候,超级对象实际上就是当前控制器的实例. 你随便下个CI ...

  2. php $CI =& get_instance();

    初学php 看有人这样写,$CI =& get_instance(); 要你自定义的类库中访问CodeIgniter的原始资源,你必须使用 get_instance() 函数.这个函数返回一个 ...

  3. CI框架下的get_instance() 函数

    你随便下个CI框架的源码都会看到很多的get_instance() 函数,这个函数是用来获取CI 的全局超级对象,CI 是单例模式的框架,所有全局有一个超级对象.因为只有一个实例,所以无论这个函数使用 ...

  4. CI 扩展 Service

    CI 扩展 Service 说明 CodeIgniter是一套典型的MVC框架,M负责数据,C负责交互,V负责视图,但是随着业务逻辑越来越复杂, 必然会涉及到一些列操作过程,例如用户下订单,就会存在校 ...

  5. CI框架源码阅读笔记9 CI的自动加载机制autoload

    本篇并不是对某一组件的详细源码分析,而只是简单的跟踪了下CI的autoload的基本流程.因此,可以看做是Loader组件的分析前篇. CI框架中,允许你配置autoload数组,这样,在你的应用程序 ...

  6. CI框架笔记

    @update 2016-4-2 13:45:35 一.目录结构 ci_demo ├─myapp 应用主目录 │ ├─autoload.php 自定义的自动加载文件(可选) │ ├─myapp.php ...

  7. ci实现RBAC,详细解释原理和核心代码显示

    代码实现不复杂,主要是思路的理解 RBAC是基于权限控制 1.权限结点管理 2.角色管理 3.管理员权限分配 结点管理就是把所有的分组 控制器 方法全部写入一个结点管理表 请注意在写一个动作比如,展示 ...

  8. ci文件缓存使用,可以用来实现多模板切换 改写URL辅助函数

    //2015年2月28日15:13:41 $this->load->driver('cache', array('adapter' => 'file'));//加载适配器 //请注意 ...

  9. ci获取当前url链接的分组,控制器,方法

    public function role() { $ci= &get_instance();//ci控制器超级对象,就是把所有执行的方法打印出来 $directory = substr($ci ...

随机推荐

  1. EntityFramework(转自wiki)

    维基百科 Entity Framework (又称ADO.NET Entity Framework) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping)解决方案,早期 ...

  2. 用Martini、websocket实现单机版聊天室

    ChatRoom A stand-alone ChatRoom in Martini Please Star https://github.com/renleimlj/ChatRoom Interfa ...

  3. 程序员必知的LinuxShell命令

    程序员必知的LinuxShell命令 grep (Globle Regular Expression Print全局正则表达式) 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的 ...

  4. python 关于一个懒惰和非懒惰的

    >>> pa = re.compile(r'<.*>') >>> result = pa.findall('<H1>title</H1 ...

  5. Mantis 配置与使用学习

    转载自:http://blog.csdn.net/xifeijian/article/category/1429687

  6. Codeforces_758_D_(区间dp)

    D. Ability To Convert time limit per test 1 second memory limit per test 256 megabytes input standar ...

  7. JavaScipt30(第二个案例)

    承接上篇https://www.cnblogs.com/wangxi01/p/10641115.html,这是第二个案例 附上项目链接: https://github.com/wesbos/JavaS ...

  8. spring aop 方法增加日志记录

    使用场景: 1:调用外部接口时需要记录出参和入参. 2:分布式系统之间,调用各个系统之间需要记录日志,一旦出现了问题也可以找得到元数据 一言不合,上代码: # 枚举类 package xxxxxxxx ...

  9. Python 操作excel day5

    一.Python操作excel python操作excel使用xlrd.xlwt和xlutils模块 1.xlrd模块是读取excel的: 2.xlwt模块是写excel的: 3.xlutils是用来 ...

  10. linux 系统 UDP 丢包问题分析思路

    转自:http://cizixs.com/2018/01/13/linux-udp-packet-drop-debug?hmsr=toutiao.io&utm_medium=toutiao.i ...