phphint.org上的PSR-0/1/2语法检查器给出以下消息
The first parameter of a multi-line function declaration must be on
the line after the opening bracket
在这个代码上:
// class autoloader for PHP 5.3+
spl_autoload_register( function ($class) {
include('classes/' . $class . '.class.php');
});
我尝试了很多,但始终没有得到PSR-0/1/2保存的这段小代码。解决方案会是什么样子(或者phphint上的分析器太严格了?)?
来自手册:
从PHP 5.3.0开始,还可以向回调参数传递闭包
所以,你所做的对我来说似乎完全正确。
你可以看看phphint.org是否同意这一点:
$lambda = function ($class) { include('classes/' . $class . '.class.php'); };
spl_autoload_register( $lambda );
我自己解决了这个问题,但解决方案非常糟糕。
spl_autoload_register( function (
$class
) {
include('classes/' . $class . '.class.php');
}
);
也许PSR的人应该想想他们奇怪的语法。正确的解决方案是这样的,即使这是一个倒退。
// autoload function (it's NOT "__autoload", __autoload is
// DEPRECATED since PHP 5.4!)
function autoload($class) {
include('classes/' . $class . '.class.php');
}
// class autoloader for PHP 5.3+, registers the function that's used if a class/file
// is not found (=autoloader)
spl_autoload_register('autoload');