2010-03-24 4 views
1

이 문제를 해결했습니다. 어떻게해야하는지 알 필요가 있습니다. 나는 클래스가 class-> function ($ values) 대신 class :: function ($ values)로 실행된다는 것을 깨달았 기 때문에 위의 오류가 발생합니다.

누구든지이 함수를 변환하여 클래스를 인스턴스화 한 다음 값이있는 함수를 실행하는 방법을 알고 있습니까?

private function _load($values=null) { 

    define('LOADED_CONTROLLER', $this->controller); 
    define('LOADED_FUNCTION', $this->function); 

    $function = $this->function; 

    $controller = new $this->controller; 
    ($values == null) ? $controller->$function() : call_user_func_array(array($this->controller, $function), $values); 
} 
+0

여기서 정확히 무엇을 묻고 있습니까? 당신은 문제가 무엇인지 알고 있다고 말하면서, 왜 아직도'$ this'를 사용하여 문제를 해결하려고합니까? 정적 문맥에서는'$ this'를 사용할 수 없습니다. – ryeguy

답변

5

이미 클래스의 인스턴스 :

$controller = new $this->controller; 

그냥 사용하여도 $controller call_user_func_array에 : 당신은 클래스 $value != null을 경우에 정적 메소드를 호출하려고 코드에서

($values == null) ? $controller->$function() : call_user_func_array(array($controller, $function), $values); 

. 이 방법에서 $this을 사용하면 물론 오류가 발생합니다.

+0

죄송합니다. 이해가 안됩니다. 내가 call_user_func_array를 사용하고있는 매개 변수의 수를 모르기 때문에. 그러나이 작업을 수행 할 때 컨트롤러 기능에서 $ this를 사용할 수 없습니다. 대체 기능이 있습니까? – JasonS

+0

@ JasonS : 물론 할 수 있습니다. 하지만 현재'array ($ controller, $ funtion) '객체 대신에'array ($ this-> controller, $ function)'클래스를 함수에 전달하고 있습니다. 그것이 당신의 실수입니다. –

+0

아, 물론, 나는 변화된 것을 해결할 수 없었다. 정말 고마워! – JasonS

관련 문제