0

phphint.org上的 PSR-0/1/2-syntax 检查器给出了这个消息

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-save。解决方案会是什么样子(或者 phphint 上的分析器是否过于严格?)?

4

2 回答 2

0

手册

从 PHP 5.3.0 开始,也可以将闭包传递给回调参数。

所以,你所做的对我来说似乎完全没问题。

你可以看看 phphint.org 是否同意这一点:

$lambda = function ($class) { include('classes/' . $class . '.class.php'); };
spl_autoload_register( $lambda );
于 2012-09-08T15:45:04.943 回答
0

我自己解决了这个问题,但解决方案非常难看。

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');
于 2012-09-08T15:49:15.023 回答