在方法调用期间使用对象 属性 作为静态 class 名称
using object propery as static class name during method invokation
假设我有一个带有静态方法 b()
的静态 class A
现在假设我有 class C 和 class 变量 functionName = 'A';
所以我想通过以下代码在一行中调用 A 的 b() 函数:
//within class C
$this->functionName::b();
然而这最终会返回解析错误....有没有一种方法可以调用 A::b() when via $this->functionName when $this->functionName = 'A'仅在一行中没有 call_user_func 等?
Uniform Variable Syntax RFC 涵盖了这一点,并已为 PHP 7.
实施
尚未向后移植,您将无法在之前的任何版本中使用该语法。
PHP 7 示例:
class a
{
static public function b()
{
echo "Hello!";
}
}
class c
{
public $functionName = 'a';
public function run()
{
$this->functionName::b();
}
}
(new c)->run();
输出:
Hello!
假设我有一个带有静态方法 b()
的静态 class A现在假设我有 class C 和 class 变量 functionName = 'A';
所以我想通过以下代码在一行中调用 A 的 b() 函数:
//within class C
$this->functionName::b();
然而这最终会返回解析错误....有没有一种方法可以调用 A::b() when via $this->functionName when $this->functionName = 'A'仅在一行中没有 call_user_func 等?
Uniform Variable Syntax RFC 涵盖了这一点,并已为 PHP 7.
实施尚未向后移植,您将无法在之前的任何版本中使用该语法。
PHP 7 示例:
class a
{
static public function b()
{
echo "Hello!";
}
}
class c
{
public $functionName = 'a';
public function run()
{
$this->functionName::b();
}
}
(new c)->run();
输出:
Hello!