Php 数组中的尾随逗号导致分析错误
我目前正在做一些关于Symfony 2.8的项目。 我遇到了这个奇怪的PHP错误 我正在构建一个symfony命令,它允许在symfony项目中使用Kahlan测试框架。因此,我需要在Kahlan测试套件中提供Symfony容器,并将其定义为所述套件的全局变量。使用容器感知命令很简单 但问题来了。当我尝试调用使用Symfony的Php 数组中的尾随逗号导致分析错误,php,arrays,symfony,command-line,Php,Arrays,Symfony,Command Line,我目前正在做一些关于Symfony 2.8的项目。 我遇到了这个奇怪的PHP错误 我正在构建一个symfony命令,它允许在symfony项目中使用Kahlan测试框架。因此,我需要在Kahlan测试套件中提供Symfony容器,并将其定义为所述套件的全局变量。使用容器感知命令很简单 但问题来了。当我尝试调用使用Symfony的security.authorization\u checker服务的服务时,cli返回以下错误: PHP解析错误:第55行的/tmp/kahlan/data/www/p
security.authorization\u checker
服务的服务时,cli返回以下错误:
PHP解析错误:第55行的/tmp/kahlan/data/www/project/vendor/symfony/symfony/src/symfony/Component/Security/Core/Authorization/ExpressionLanguageProvider.PHP中出现语法错误,意外
所述文件的代码:
[...]
public function getFunctions()
{
return array(
new ExpressionFunction('is_anonymous', function () {
return '$trust_resolver->isAnonymous($token)';
}, function (array $variables) {
return $variables['trust_resolver']->isAnonymous($variables['token']);
}),
new ExpressionFunction('is_authenticated', function () {
return '$token && !$trust_resolver->isAnonymous($token)';
}, function (array $variables) {
return $variables['token'] && !$variables['trust_resolver']->isAnonymous($variables['token']);
}),
new ExpressionFunction('is_fully_authenticated', function () {
return '$trust_resolver->isFullFledged($token)';
}, function (array $variables) {
return $variables['trust_resolver']->isFullFledged($variables['token']);
}),
new ExpressionFunction('is_remember_me', function () {
return '$trust_resolver->isRememberMe($token)';
}, function (array $variables) {
return $variables['trust_resolver']->isRememberMe($variables['token']);
}),
new ExpressionFunction('has_role', function ($role) {
return sprintf('in_array(%s, $roles)', $role);
}, function (array $variables, $role) {
return in_array($role, $variables['roles']);
}),
);
}
[...]
第55行是最后一个数组元素的行,因此所说的逗号是后面的逗号。
该错误仅在cli中引发。
当然,我试过去掉逗号,一切都很好。但是很明显,我不能改变Symfony的内置类
那么,为什么PHP只在cli模式下对数组中的尾随逗号抛出解析错误,你们知道如何解决这个问题吗
谢谢。从kahlan捆绑回购协议中可以看出,问题不在我的代码中,而似乎在kahlan身上
升级到新的kahlan版本就解决了这个问题。从kahlan捆绑回购协议中可以看出,问题不在我的代码中,而似乎在kahlan身上
升级到新的kahlan版本就解决了这个问题。返回sprintf('in_array(%s,$roles)',$role);我想这条线会导致issue@RahulMeshram我觉得那条线很好。我似乎不是,这是第53条线。第55行向下两行,后面的逗号就是问题所在。return sprintf('in_array(%s,$roles)'),$role);我想这条线会导致issue@RahulMeshram我觉得那条线很好。我似乎不是,这是第53条线。第55行向下两行,后面的逗号是问题所在。