PHP - 使用常量的值来引用数据成员

Ton*_*Gee 4 php class constants

我试图通过使用常量来访问一个类对象的数据成员.我想知道这是否可能使用类似于我正在使用的语法?

当我尝试在以下脚本中执行此操作时,我收到此错误:解析错误:语法错误,意外T_PAAMAYIM_NEKUDOTAYIM

class Certificate {
    const BALANCE = 'cert_balance';

    public function __construct() {}

}

class Ticket {
    public $cert_balance = null;

    public function __construct()
    {
        $this->cert_balance = 'not a chance';
        echo $this->cert_balance."<br />";
    }
}

$cert = new Certificate();

$ticket = new Ticket();

// This next code line should be equal to: $ticket->cert_balance = 'nice'; 

$ticket->$cert::BALANCE = 'nice!';
Run Code Online (Sandbox Code Playgroud)

Pau*_*xon 7

您需要使用大括号消除表达式的歧义.此外,在PHP 5.3之前,您需要通过类名引用常量,如下所示:

$ticket->{Certificate::BALANCE} = 'nice!';
Run Code Online (Sandbox Code Playgroud)

关于类常量PHP手册部分说明了这一点

从PHP 5.3.0开始,可以使用变量引用该类

所以在PHP 5.3.0及更高版本中,这将起作用:

$ticket->{$cert::BALANCE} = 'nice!';
Run Code Online (Sandbox Code Playgroud)