我正在涉足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";