php ci get instance,*** $CI =& get_instance() 用法:关于CodeIgniter中get_instance() 函数

本文详细介绍了PHP CodeIgniter框架中的get_instance()函数,它用于在类库、助手等非控制器组件中获取CI超级对象,以便调用CI的功能。get_instance()通过引用传递以确保不创建对象副本,从而避免资源消耗。在自定义类中,可以通过$CI = &get_instance()来访问CI的加载器、配置项等。该方法在单例模式的CI框架中扮演关键角色,确保高效地使用全局资源。
摘要由CSDN通过智能技术生成

使用场景:php

注意 get_instance 的使用场景,这个方法并非用在控制器中的。

而是用在控制器外面,好比类库中,想操做 CI 超级对象的时候,超级对象实际上就是当前控制器的实例。windows

你随便下个CI框架的源码都会看到不少的get_instance() 函数,这个函数是用来获取CI 的全局超级对象,CI 是单例模式的框架,全部全局有一个超级对象。由于只有一个实例,因此不管这个函数使用多少次都不会消耗资源的。通常来讲,只有在helper或library中才使用get_instance。session

之前咱们都是这样用的:$this->load->library('session');框架

$this只做用在你本身的控制器、模型、视图中,若是你在自定义的类中也想使用CI的函数话,你就能够这样作:函数

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

$ci = &get_instance();url

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

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

要你自定义的类库中访问CodeIgniter的原始资源,你必须使用 get_instance() 函数.这个函数返回一个CodeIgniter super object.

通常来讲在你的控制器函数中你能够经过 $this 调用任何可用的CodeIgniter函数:

$this->load->helper('url');

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

$this->config->item('base_url');

etc.

$this, 只直接做用在你本身的控制器,模型和视图中.当你在自定义类中想使用CodeIgniter原始类时,你能够这样作:

首先,定义CodeIgniter对象赋给一个变量:

$CI =& get_instance();

一旦定义某个对象为一个变量,你就可使用那个变量名 取代 $this:

$CI =& get_instance();

$CI->load->helper('url');

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

$CI->config->item('base_url');

etc.

注意: 你将注意到get_instance()这个函数经过被引用的方式被传递:

$CI =& get_instance();

这十分重要. 经过引用的方式赋给变量将使使用原始的CodeIgniter对象,而不是建立一个拷贝

同时,请注意: 若是你使用php 4,那么请最好不要在类的构造函数中调用 get_instance() .php4在引用位于构造函数中的CI super object时存在问题,由于对象只有在类彻底实例化后才存在.ci

对于"CI官方手册说调用get_instance()函数时,要用&引用符号;缘由是为了防止对象生成副本"这一句里面的"防止对象生成副本",类比Unix中的硬连接、软连接,是否是就是防止生成软连接,就像windows中的,只生成某个软件的启动exe的别名,而不要发送或复制快捷方式到其余地方而产生快捷方式的复制?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值