PHP kapanışları ve örtük genel değişken kapsamı

0 Cevap php

Bir implicitly kapaklar kullanım için küresel olarak üst düzey değişkenleri bildirmek bir yolu var mı?

Örneğin, bu gibi kod ile çalışma durumunda:

$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')
                    )
                    .
                    .
                    .

Kapaklar gibi bir yöntemi olarak adlandırılır:

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

So in summary/TL;DR, is there a way to implicitly declare variables as global for use in closures (or other functions I suppose) without making use of the global anahtar kelime veya $GLOBALS süper küresel?

Ben sık sık (http://www.vbforums.com/showthread.php?p=3905718#post3905718) başka bir forumda bu konuyu başladı

0 Cevap