我一直想知道是否可以将另一个对象分配给$ this?
在CodeIgniter中,我从主控制器调用另一个控制器。
应用/控制器/ module.php
Class Module extends CI_Controller {
public function __construct() {
parent::__construct();
}
public function _remap($class, $args = array()) {
// doing some checks that is there a valid file, class and method
// assigning the $method.
// including MY_Module class. I'am extending every module from this class.
// then:
$EG = new $class();
call_user_func_array(array(&$EG, $method), array_slice($this->uri->rsegments, 3));
}
}
在被叫班级中:
Class Users extends MY_Module
{
public function __construct() {
parent::__construct();
}
public function index() {
// Want to use this class and method like it is a codeigniter controller.
}
}
MY_Module:
Class My_Module {
public function __construct() {
$this =& CI_Controller::get_instance(); // Here is problem.
}
}
我想使用实例化的类'声明到My_Module类。因此它不会初始化相同的库,也不会花费更多的资源。
我该如何实现?
感谢您的建议。
编辑:我试图从CI_Controller扩展MY_Module。但由于它已经实例化了一次,因此造成了问题。
答案 0 :(得分:5)
您无法“注入”对当前$this
对象的引用。即使这是可能的,我也会强烈反对。
只需将引用分配给另一个var并从中使用。
public function __construct() {
$yourSingleton = CI_Controller::get_instance();
}
答案 1 :(得分:1)
这在PHP中是不可能的(应该如此)。
你应该将你的问题改写成更像这样的东西:
我有两个类,它们都初始化相同的库(因此耗尽了更多的资源)。 我怎么能避免这个?
[这里的例子]