我想“使用”静态类变量作为闭包的 use list语句的一部分吗?
以下代码段完全失败,因为 意外的“自我” 解析错误。
data: {check_in_date: "#{@check_in_date}", check_out_date: "#{@check_out_date}", longitude: "#{@longitude}", latitude: "#{@latitude}", rooms: "#{@rooms}", adults: "#{@adults}", children: "#{@children}", currency: "#{@currency}" }
OR
array_walk($_categories, function($c, $i) use (&self::$tree) {
解析错误:语法错误,意外“自我”(T_STRING),期待变量(T_VARIABLE)
在这种非常特殊的情况下是否有任何特殊的语法?
答案 0 :(得分:1)
为什么你想要这样做呢?鉴于您使用self
,闭包在某个类中明确定义,因此您无论如何都可以访问静态成员:
class Foo
{
protected static $bar = 123;
public function test()
{
return function($x) {
static::$bar += $x; // or self::$bar
return static::$bar;
};
}
}
$x = new Foo;
$y = $x->test();
var_dump($y(1));//int(124)
var_dump($y(2));//int(126)
根本不需要参考参考资料......
如果你使用的是EOL版本的PHP(例如5.3),你可以先解决静态成员的引用,然后通过{{1}传递对该引用的引用来解决这个问题。 }:
use
但是如果你还在使用很久以前的EOL版本的PHP版本,那么你应该升级......