静态方法中的PHP变量范围
我无法访问在方法调用之外可用的变量。(使用Laravel)例如:静态方法中的PHP变量范围,php,laravel,scope,Php,Laravel,Scope,我无法访问在方法调用之外可用的变量。(使用Laravel)例如: print "Here is my name: $name\n"; return Foo::find(1)->whereHas('bar', function($q) { global $name; print "Unfortunately this name is blank: " . $name; $q->where('name', 'like',
print "Here is my name: $name\n";
return Foo::find(1)->whereHas('bar', function($q) {
global $name;
print "Unfortunately this name is blank: " . $name;
$q->where('name', 'like', '%' . $name . '%');
})->first();
whereHas函数中的$name始终为空。如果我没有将其声明为$global,那么我会得到一个警告,$name根本不存在。如何访问它?您可以使用
use
关键字发送对匿名函数(即闭包)的引用:
$name = 'foo';
return Foo::find(1)->whereHas('bar', function($q) use ($name) {
print "Here name should be : " . $name; // foo
$q->where('name', 'like', '%' . $name . '%');
})->first();
顺便说一句,我还没有测试过这个,但它应该能工作好球,先生!我不知道use()关键字。工作得很有魅力。谢谢