私の質問への回答はたくさん検索しましたStackoverflowしかし、ここでは答えが見つかりませんでした。CodeIgniterドライバ:__call()メソッド
とにかく、私はCodeIgniterのドライバを何度も試してみましたが、__callメソッドのために頻繁に終了しました。私は例で説明しましょう。
は今、私はそうのようなユーザードライバを持って
class App extends CI_Driver_Library
{
public $CI;
public $valid_drivers;
public function __constructor()
{
$this->CI &= get_instance();
$this->valid_drivers = ['users']; // An example.
}
}
(それは当然のCI_Driver_Libraryを拡張する)のは、私がアプリケーションと呼ばれるドライバを持っているとしましょう。私はこのApp_users __constructorにUsers_modelをロードしたい
class App_users extends CI_Driver
{
private $CI;
public function __construct()
{
$this->CI =& get_instance();
$this->CI->load->model('users_model');
}
public function __call($method, $params = [])
{
if (method_exists($this, $method)
{
return call_user_func_array(array($this, $method), $params);
}
elseif (method_exists($this->CI->users_model, $method))
{
return call_user_func_array(array($this->CI->users_model, $method), $params);
}
else
{
throw new BadMethodCallException("No such method: {$method}");
}
}
}
(可能ですが、親:: $のCIはアクセスできませんが、私は管理)。
このドライバの方法ORモデルのメソッドかどうかを呼び出すために__callメソッドを使用しているとき、私は直面しています問題があります。残念なことに、その魔法は私のために働いたことはありませんでした。可能であればどうすればいいですか?そうでない場合、回避策はありますか?
ありがとうございます。
__callの実装を教えてください。 – DFriend
@DFriend私はコードを編集して実装しました。(入力ミスを避けてください) –