【发布时间】:2014-05-05 23:15:41
【问题描述】:
我遇到了一个奇怪的问题。我正在开发一个应该适用于 PHP5.3 的程序。今天,安装了PHP5.3.5的服务器在运行我的程序时给了我以下错误:Fatal error: Cannot access self:: when no class scope is active on line 19
我在任何其他具有更高 PHP 版本的服务器上都没有这个问题。但是我必须找到一个解决方案。
为了使问题易于理解,我制作了以下小脚本。基本上我调用一个带有闭包作为参数的全局函数,它调用一个私有静态函数。
我研究了这个问题,似乎Closure::bind 将是解决方案,但仅适用于 PHP5.4+。我需要 PHP5.3 的解决方案,但我走投无路了。
<?php
function doSth($c)
{
$c();
}
class foo
{
private static function bar()
{
echo 'OK';
}
public static function go()
{
doSth(function()
{
self::bar();
});
}
}
foo::go();
【问题讨论】:
-
试试:
doSth(function() using (self) { self::bar(); }); -
@Sammitch:你是说
use吗?不幸的是,这似乎是不允许的。 (Parse error: syntax error, unexpected T_STRING, expecting '&' or T_VARIABLE)
标签: php closures static-methods php-5.3 private-members