2

$ thisに別のオブジェクトを割り当てることは可能ですか?

CodeIgniterで、メインコントローラーから別のコントローラーを呼び出しています。

application / controllers / 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を拡張しようとしました。しかし、すでに一度インスタンス化されているため、問題が発生しています。

4

2 に答える 2

5

$this現在のオブジェクトへの参照を「注入」することはできません。そして、それが可能であったとしても、私は強く反対することをお勧めします。

参照を別の変数に割り当てて、そこから使用するだけです。

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

}
于 2011-06-07T14:31:15.400 に答える
1

これはPHPでは不可能です(そうあるべきです)。

質問を次のように言い換える必要があります。

私には2つのクラスがあり、どちらも同じライブラリを初期化します(したがって、より多くのリソースを使用します)。どうすればこれを回避できますか?

[ここの例]

于 2011-06-07T14:30:41.733 に答える