从我的CakePHP框架中删除插件以及与之关联的所有代码行后,我getInitializer
文件夹中autoload_static.php
的{{1}}函数出错:
vendor->composer
所有前缀和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);
}
都带有下划线,错误消息显示:
“会员有私人访问权”
我对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这是一个不安全的协议。
由于项目不是太旧,它可能是最简单的方法,只需完全删除它并从头开始重新启动,或者是否有一个简单的解决方案?
答案 0 :(得分:7)
这些行在技术上被错误地突出显示为错误,甚至在您修改代码之前它们都被突出显示为错误。
代码将特定对象和作用域绑定到闭包,在这种情况下,它将$loader
对象(ClassLoader
的实例)与ClassLoader::class
作用域绑定。这将导致闭包以一种使私有方法对其可见的方式绑定到$loader
对象,因此在运行时不会出现错误。
所以问题只是PhpStorm解析器不够智能(还)才能识别出来。
另请参阅 http://www.php.net/manual/en/closure.bind.php
就你的其他作曲家问题而言,供应商文件应该总是可以安全删除,即vendor
文件夹通常只应包含通过作曲家安装的代码,这意味着万一你搞砸了,如果需要,您应该只需删除vendor
文件夹,修复composer.json
文件(并删除composer.lock
文件),然后运行composer update
或{再次{1}}命令。