【问题标题】:I have a syntax error, unexpected '::'我有一个语法错误,意外的 '::'
【发布时间】:2014-06-26 09:52:52
【问题描述】:

一件了不起的事情:

Class Myclass{

 protected $_value = 'content';

 public function action(){

  $this->_value::mymethod();
 }

}

=> 我有一个错误:

语法错误,意外'::'

如果我这样修改,它可以工作:

$myvalue = $this->_value;
$myvalue::mymethod();

你知道为什么吗?

【问题讨论】:

  • '::' 用于调用静态方法,因此您正在调用字符串的静态方法...这是错误的...
  • _value,我认为这里的下划线会造成问题
  • @DWX 为什么下划线会有问题?
  • 各位,这完整的代码。 “修改”版本确实有效,正如它应该的那样。这实际上是一个有效的问题!最终结果是在content 类上静态调用mymethod

标签: php


【解决方案1】:

PHP 无法自信地确定您要完成的任务

$this->_value::mymethod();

它可以读作任何一个

{$this->_value}::mymethod()(你所期望的)

$this->{_value::mymethod()}

因此,它不会猜测并且可能是错误的,而是会产生错误。只需使用您已经发现的方法即可。

【讨论】:

  • 好吧,我已经按照建议尝试了:{$this->_value}::mymethod();我想你强制优先级来完成它。但我有另一个错误消息:语法错误,意外'}'
  • 呵呵,你的做法是唯一可行的方法(此时)。我只是用括号来表示优先级,很抱歉造成混淆。
猜你喜欢
  • 2016-01-01
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多