-1

我正在涉足 WordPress 插件的“轻量级”PSR-0 AutoLoader,它在我的本地开发服务器上运行良好,但是当我将它推送到 WPEngine 的一个登台服务器时,我得到了这个:

解析错误:语法错误,第 30 行 /nas/wp/www/staging/ahsodesigns/wp-content/plugins/AhSoFunctionality/start.php 中的意外 '[',期待 ')'

这是自动加载器,

// lightweight psr-0 autoloader
spl_autoload_register(function ($classname) {
    // make sure we're only loading classes from our directory,
    if (preg_match('/AhSo/',$classname)) {
        $classname = ltrim($classname, "\\");
        preg_match('/^(.+)?([^\\\\]+)$/U', $classname, $match);
        $classname = str_replace("\\", "/", $match[1])
            . str_replace(["\\", "_"], "/", $match[2])
            . ".php";
        include_once $classname;
    }
});

问题就在这条线上,

$classname = str_replace("\\", "/", $match[1])
            . str_replace(["\\", "_"], "/", $match[2])
            . ".php";

显然它不喜欢括号......我已经尝试了一些快速的事情,比如将连接全部移动到一行。不走运,我猜这可能是某种 php.ini 的东西,或者我在 WPEngine 的 php 配置中不喜欢的流氓行结束字符。该文件是在 phpStorm 中构建的,带有 Unix 行分隔符“\n”。我希望我有更多的时间来处理它,但你知道这是怎么回事。再次感谢堆栈。最好的。资源。曾经。

4

1 回答 1

3

您使用的是 php 5.4 数组表示法,较低的 PHP 版本不支持它。将其更改为

$classname = str_replace("\\", "/", $match[1])
        . str_replace(array("\\", "_"), "/", $match[2])
        . ".php";
于 2012-09-18T15:34:13.703 回答