PHP7 - class 静态变量不支持变量函数

PHP7 - class static variable doesn't support variable function

在 PHP7.4.3 中,我尝试使用 class 静态变量来引用不同的 class 静态成员函数,如下所示:

1  class ColorT {
2    static $color = "yellow";
3    static function yellow() {
4        echo "yellow"."<br>";
5    }
6    static function green() {
7        echo "green"."<br>";
8    }
9  }

10 ColorT::$color();  //ColorT::yellow() function is expected to be called

11 $global_color = "yellow";
12 ColorT::$global_color();  //ColorT::yellow() function is expected to be called

第 10 行和第 12 行,我希望 ColorT::yellow() 被调用。
第 12 行按预期工作。
但是在第 10 行,它打印错误:

PHP Fatal error: Uncaught Error: Function name must be a string

php 不支持 class 静态变量引用 class 静态成员函数吗?
如果支持,那么如何解决第10行提到的错误?

在第 10 行中,ColorT::$color 是“黄色”。所以 ColorT::$color() 会调用 yellow(),而不是 ColorT::yellow()

为此,您可以使用 callbable ['ColorT', ColorT::$color] 动态调用 ColorT::yellow()

示例:

class ColorT {
  static $color = "yellow";
  static function yellow() {
      echo "yellow"."<br>";
  }
  static function green() {
      echo "green"."<br>";
  }
}

$method = ['ColorT', ColorT::$color];
$method();

输出:

yellow<br>

另一种方法是在 ColorT 中创建一个方法:

static public function callFunc() 
{
    [__class__, self::$color]();
}

并使用

ColorT::callFunc(); // "yellow<br>"

您也可以使用 is_callable()

检查