【发布时间】:2017-04-16 14:43:12
【问题描述】:
我有一个将类名存储为字符串的属性。然后我想用它来调用所述类的静态方法。据我所知,这从 PHP 5.3 开始是可能的。我在 vagrant box 上运行 5.6.x。
我想这样做:
$item = $this->className::getItem($id);
但我收到以下错误:
Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)...
以下工作正常:
$c = $this->className;
$item = $c::getItem($id);
知道为什么吗?这不是一回事吗?
【问题讨论】:
-
class是 OOP 中的保留(关键字)字,据我所知。 php.net/manual/en/reserved.keywords.php -
因为
$this->class::getItem($id);行不清楚。是什么{$this->class}::getItem($id);或$this->{class::getItem($id)};谁能告诉? -
是的,我意识到
class已保留,并更新了我的代码以使用非保留字。我仍然有这个问题,所以我独自离开了这个职位。我现在对其进行了编辑,以明确我不再使用保留字。 -
好吧 that stealthy edit 把 my comment 吹到水里了,不是吗?
标签: php