从我的CakePHP框架中删除插件以及与之关联的所有代码行后,我在vendor-> composer文件夹中的autoload_static.php的getInitializer函数中出错:
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit8835d383dd0f2dc92619594332e8ea7e::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit8835d383dd0f2dc92619594332e8ea7e::$prefixDirsPsr4;
$loader->prefixesPsr0 = ComposerStaticInit8835d383dd0f2dc92619594332e8ea7e::$prefixesPsr0;
$loader->classMap = ComposerStaticInit8835d383dd0f2dc92619594332e8ea7e::$classMap;
}, null, ClassLoader::class);
}
所有前缀和classMap都带有下划线,错误消息显示:
“Member has private access”
我对PHP很新,所以我的问题是如何处理这个错误?我想删除这4行代码是不安全的.
我已经尝试更新作曲家并使PhpStorm中的缓存/重启无效.
编辑1
我当然不应该从作曲家文件中手动删除与旧插件相关的代码行.
作曲家诊断:
检查composer.json:失败
require.cakephp / plugin-installer:应避免使用未绑定的版本约束(*)
检查平台设置:FAIL
PHP使用的OpenSSL库(0.9.8y)不支持TLSv1.2或TLSv1.1.
如果可能,您应该将OpenSSL升级到1.0.1或更高版本.
检查git设置:好的
检查http连接到packagist:警告:通过http访问packagist.org,这是一种不安全的协议.
由于项目不是太旧,它可能是最简单的方法,只需完全删除它并从头开始重新启动或是否有一个简单的解决方案?
解决方法:
这些行在技术上被错误地突出显示为错误,甚至在您修改代码之前它们都被突出显示为错误.
代码将特定对象和作用域绑定到闭包,在这种情况下,它将使用ClassLoader :: class作用域绑定$loader对象(ClassLoader的一个实例).这将导致闭包以一种使私有方法对其可见的方式绑定到$loader对象,因此在运行时不会出错.
所以问题只是PhpStorm解析器不够智能(尚未)识别这一点.
另见http://www.php.net/manual/en/closure.bind.php
就你的其他作曲家问题而言,供应商文件应该总是可以安全删除,即供应商文件夹通常应该只包含通过作曲家安装的代码,这意味着万一你搞砸了,你应该能够简单地删除如果需要,在vendor文件夹中修复您的composer.json文件(并删除composer.lock文件),然后再次运行composer update或composer install命令.
原文地址:https://codeday.me/bug/20190611/1219064.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。