使用类静态变量作为闭包使用列表的一部分

时间:2016-08-08 13:07:11

标签: php

我想“使用”静态类变量作为闭包的 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)

在这种非常特殊的情况下是否有任何特殊的语法?

1 个答案:

答案 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版本,那么你应该升级......