2

我一直想知道是否可以将另一个对象分配给 $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_模块:

Class My_Module {
    public function __construct() {
        $this =& CI_Controller::get_instance(); // Here is problem.
    }
}

我想对 My_Module 类使用实例化类的声明。这样它就不会初始化相同的库并且不会花费更多资源。

我怎样才能做到这一点?

感谢您的建议。

编辑:我试图从 CI_Controller 扩展 MY_Module。但是由于它已经实例化了一次,因此会引起问题。

4

2 回答 2

5

您不能“注入”对当前$this对象的引用。即使这是可能的,我也会强烈反对。

只需将引用分配给另一个 var 并从中使用。

public function __construct() {
    $yourSingleton = CI_Controller::get_instance(); 

}
于 2011-06-07T14:31:15.400 回答
1

这在 PHP 中是不可能的(应该如此)。

你应该把你的问题改写成更像这样的东西:

我有两个类,它们都初始化了相同的库(因此占用了更多资源)。我怎样才能避免这种情况?

[此处示例]

于 2011-06-07T14:30:41.733 回答