微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决PHP7 - 类静态变量不支持变量函数

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

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 致命错误:未捕获的错误函数名必须是字符串

PHP不支持类静态变量引用类静态成员函数吗?
如果支持,那么如何修复第 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()

检查

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。