【问题标题】:PHP - Using a constant's value to reference a data memberPHP - 使用常量的值来引用数据成员
【发布时间】:2010-08-03 21:27:43
【问题描述】:

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

当我尝试在以下脚本中执行此操作时,我收到此错误:解析错误:语法错误,意外 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!';

【问题讨论】:

    标签: php class constants


    【解决方案1】:

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

    $ticket->{Certificate::BALANCE} = 'nice!';
    

    PHP manual section on class constants 这么说

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

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

    $ticket->{$cert::BALANCE} = 'nice!';
    

    【讨论】:

      【解决方案2】:

      做:

      $ticket->{$cert::BALANCE} = 'nice';
      

      所以解析器知道它必须首先处理$cert::BALANCE。看来你需要PHP 5.3 才能工作。否则,请使用类名而不是 $cert

      关键是你必须把它放入{}

      【讨论】:

      • @downvoter:请解释我的回答有什么问题。谢谢你。有趣的是,正确的答案被否决了......
      猜你喜欢
      • 2012-11-13
      • 2019-09-03
      • 2010-12-04
      • 2018-05-25
      • 2013-12-26
      • 2019-07-02
      • 1970-01-01
      • 2012-12-13
      • 2021-08-10
      相关资源
      最近更新 更多