내 질문에 대한 답변을 많이 찾고 잠시 동안 에 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을 확장).
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}");
}
}
}
내가이 App_users __constructor에 에게 Users_model를로드 할 (수 있지만 부모 : $의 CI은 액세스 할 수 없습니다하지만 난 관리). 이 드라이버의 방법 여부 또는 모델의 메소드를 호출하는 __call에게 방법을 사용하는 경우
내가 직면하고 문제이다. 불행히도, 그 마법 방법은 절대로 나에게 도움이되지 못했습니다. 가능한 경우 어떻게 할 수 있습니까? 그렇지 않은 경우 해결 방법이 있습니까?
미리 감사드립니다. 조건을 만족하지 않습니다 때문에 조건
if (method_exists($this, $method)...
무의미 경우 모든
'__call'구현을 알려주십시오. – DFriend
@DFriend 나는 코드를 편집하고 구현을 추가했습니다. (제발 오해하지 마세요.) –