如何写这个自动加载器PSR-0/1/2保存?

时间:2012-09-08 15:39:15

标签: php syntax psr-0

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-save。 解决方案的外观如何(或者分析器上的分析器是否过于严格?)?

2 个答案:

答案 0 :(得分:0)

来自manual

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

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

您可以看到phphint.org是否同意:

$lambda = function ($class) { include('classes/' . $class . '.class.php'); };
spl_autoload_register( $lambda );

答案 1 :(得分: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');