PHP 语法错误语法错误,意外的"[",预期')' str_replace,PSR-0 自动加载机



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

解析错误:语法错误,第 30 行/nas/wp/www/staging/ahsodesigns/wp-content/plugins/AhSoFunction/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 配置中有一个流氓行结尾字符不喜欢。该文件是在带有Unix行分隔符''的phpStorm中构建的。我希望我有更多的时间来搞砸它,但你知道这是怎么回事。再次感谢堆栈。最好。资源。曾。

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

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

相关内容

  • 没有找到相关文章

最新更新