创建辅助类 | Creating Ancillary Classes
创建辅助类
在某些情况下,您可能希望开发存在于控制器之外但能够利用CodeIgniter所有资源的类。你会看到,这是很容易实现的。
get_instance()
get_instance()
返回: | 参考您的控制器的实例 |
---|---|
返回类型: | 是CI_Controller |
您在控制器方法中实例化的任何类都可以
通过使用该get_instance()
函数访问CodeIgniter的本机资源
。该函数返回主要的CodeIgniter对象。
通常,要调用任何可用的方法,CodeIgniter要求您使用$this
建造:
$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()
在另一个类中,如果将其分配给属性,则会更好。这样,你就不用打电话了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()
将在实例化示例类之后工作,而不需要调用get_instance()
每个人。