2013-06-19 2 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

Смежные вопросы