有什么方法可以
隐含地
声明顶级变量为全局变量以用于闭包?
例如,如果使用这样的代码:
$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;
}
因此,在summary/tl;dr中,是否有一种方法可以隐式地将变量声明为全局变量,以便在闭包(或我认为是其他函数)中使用,而不使用
global
关键字或
$GLOBALS
超全球?
我是在另一个论坛上开始这个话题的(
http://www.vbforums.com/showthread.php?p=3905718#post3905718
)