2013-06-19 139 views
0

我有一個函數被調用一次啓動,然後再作爲回調。我需要在回調中訪問初始設置中定義的一些值。PHP的靜態變量和對象

我不確定在關閉後'init'部分的變量究竟發生了什麼。顯然,靜態在調用回調段時可用。但是,對象是否可用?或者在'init'部分返回後它沒有設置?如果丟失了,是否可以將一個對象分配給一個靜態變量?如$static = $object;之前的return;一行?

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