2013-06-19 4 views
0

초기화를 위해 한 번 호출 한 다음 나중에 콜백으로 호출하는 함수가 있습니다. 콜백에서 액세스 할 초기 설정에서 정의 된 값 중 일부가 필요합니다.PHP 정적 변수 및 객체

'init'섹션을 닫은 후에 변수가 어떻게되는지 정확히 알 수 없습니다. 콜백 섹션이 호출 될 때 콜백 섹션에서 해당 정적을 사용할 수 있음이 분명합니다. 그러나 객체도 사용할 수 있습니까? 아니면 'init'섹션이 반환 된 후에 설정이 해제 되었습니까? 그것이 손실되면 정적 변수에 객체를 할당 할 수 있습니까? 예 : return; 행 앞에 $static = $object;과 같은?

function someFunction($type) { 
    if ($type == 'init') { 
     static $static; 
     $object = new stdClass(); 
     $object->property = 'value'; 
     return; 
    } 
    elseif ($type == 'callback') { 
     //Stuff that uses $object->property 
     return; 
    } 
} 
+1

왜 사용해 보지 않으셨습니까? – phant0m

+1

왜 이것이 수업이 아니십니까? –

+0

@PaoloBergantino 왜 그래야합니까? – foochow

답변

2

클래스로 함수 :

class Foo 
{ 
    private $static; 

    public function __construct() 
    { 
     $object = new stdClass(); 
     $object->property = 'value'; 

    } 

    public function callback() 
    { 
     //Stuff that uses $object->property 
     return; 
    } 
} 

사용법 :

$array = array(); // completely useless array 

$callback = new Foo(); 

// Use the callback object for a callback: 
array_walk($array, array($callback, 'callback')); 

당신은 말할 수 : 생성자가 $object를 저장하지 않지만, 저장하는 것은 매우 쉬운 것입니다 필요한 경우 Foo 클래스의 속성에 추가합니다. 그런 다음이 클래스 내의 다른 함수 호출에서 사용할 수 있습니다.

+0

충분히 정교합니다. 즉, 정적으로 객체를 저장할 수 있다고해도 예외적 인 코드를 만들 것이고, 실제로 시도하고 진실한 방법을 고수하는 것이 가장 좋습니다. 감사. – foochow