我在做一个插件系统。我有一个类extensionmanager,它将插件的名称作为构造函数参数。长话短说,这就是我试图运行的代码:
$this->parsedata = function($data) {
$this->extension::parsedata($data);
};$this-extension是一个具有插件名称的字符串。我以本例中所示的精确方式运行了静态函数。现在我得到了第二行的错误unexpected T_PAAMAYIM_NEKUDOTAYIM (我听说它大致翻译成“意外的双冒号”)
有人能帮我理解原因吗?
在上面的示例之前,我尝试运行这样的程序
$this->parsedata = &$this->extension::parsedata;因此问题的标题。我认为最好的例子更接近于工作,所以我改变了它。
发布于 2011-02-28 19:30:23
这样做:
$self = $this;
$this->parsedata = function($data) use ($self) {
{$self->extension}::parsedata($data);
};然而,我建议避免静态函数。毕竟,无论谁要使用您的扩展管理器,都需要符合某些接口。为什么不利用抽象方法或接口使用户符合您的界面呢?
https://stackoverflow.com/questions/5146545
复制相似问题