Закрытия PHP и неявная область глобальных переменных

Есть ли способ неявно объявить переменные верхнего уровня глобальными для использования в замыканиях?

Например , при работе с таким кодом:

$a = 0; //A TOP-LEVEL VARIABLE

Alpha::create('myAlpha')
    ->bind(DataSingleton::getInstance()
        ->query('c')
    )
    ->addBeta('myBeta', function($obj){
        $obj->bind(DataSingleton::getInstance()
                ->query('d')
            )
            ->addGamma('myGamma', function($obj){
                $obj->bind(DataSingleton::getInstance()
                        ->query('a')
                    )
                    ->addDelta('myDelta', function($obj){
                        $obj->bind(DataSingleton::getInstance()
                            ->query('b')
                        );
                    });
            })
            ->addGamma('myGamma', function($obj){

                $a++; //OUT OF MY SCOPE

                $obj->bind(DataSingleton::getInstance()
                        ->query('c')
                    )
                    .
                    .
                    .

Замыкания вызываются из метода как такового:

    public function __construct($name, $closure = null){
        $this->_name = $name;
        is_callable($closure) ? $closure($this) : null;
    }

Итак, вкратце, / TL; DR, есть ли способ неявно объявить переменные глобальными для использования в замыканиях (или других функциях) Я полагаю) без использования ключевого слова global или $ GLOBALS super-global?

Я начал эту тему на другом форуме, который часто посещаю ( http: // www .vbforums.com / showthread.php? p = 3905718 # post3905718 )

9
задан Dan Lugg 29 October 2010 в 17:43
поделиться