2013-04-19 4 views
0

클래스 (함수 setFunction)에서 함수를 설정하는 기능을 갖고 싶습니다. 나중에 (매개 변수 지정 등) 외부에서 호출 할 수있는 함수 (예 : getFunction)를 가져오고 싶습니다. 여기에 내가 시도 무엇 :PHP에서 함수에서 함수를 반환하는 방법은 무엇입니까?

class Test 
{ 
    var $function; 

    function setFunction($foo) 
    { 
     $this->function = $foo; 
    } 

    function getFunction() 
    { 
     return $this->function; 
    } 

    function foo1($a) 
    { 
     print "foo1: ".$a."\n"; 
    } 

    function foo2($b) 
    { 
     print "foo2: ".$b."\n"; 
     } 

} 

$oClass = new Test(); 
$oClass->setFunction($oClass->foo1); 
$oClass->getFunction()('test'); # <--- line 32 

예상 출력

foo1: test 

이다하지만 대신 오류가 발생합니다 :

PHP Parse error: syntax error, unexpected '(' in tester.php on line 32 

모든 아이디어를 어떻게이 문제를 해결하기 위해? 다음은 몇 가지 제약 조건입니다.

  • 이는 각 기능에 대한 임의의 매개 변수에 대해 작동해야합니다.
  • 정의 할 함수는 항상 클래스 자체에 지정됩니다 (도움이되는 경우).
+3

PHP4에서 실제로 작업하고 있습니까? 아니면 태그를 엉망으로 만들었습니까? 또한 [callables in PHP] (http://php.net/manual/en/language.types.callable.php)를 살펴보십시오. –

+0

예, PHP4가 필수입니다. – Alex

+0

@Alex : PHP 4 코드가 필요하더라도 per-se는 PHP 4에만 국한되지 않으므로 태그를 제거했습니다. 나는 이것이 당신과 괜찮 았으면 좋겠다. – hakre

답변

-1

PHP에서의 기능은 그다지 큰 문제가 아닙니다. 당신은 이런 식으로 할 수 없습니다.

4

당신은 call_user_func을 사용해야합니다 :

$oClass = new Test(); 
$oClass->setFunction(array($oClass, 'foo1')); 
call_user_func($oClass->getFunction(), 'test'); 

array($oClass, 'foo1')는 클래스 인스턴스 $oClass에 방법 foo1의 호출을 나타내는 callable입니다.

관련 문제