Ric*_*etz 5 php cakephp phpstorm composer-php
从我的CakePHP框架中删除插件以及与之关联的所有代码行后,我的文件夹中的getInitializer函数出错:autoload_static.phpvendor->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);
}
Run Code Online (Sandbox Code Playgroud)
所有前缀和classMap下划线都显示错误消息:
"会员有私人访问权限"
我对PHP很新,所以我的问题是如何处理这个错误?我想删除这4行代码是不安全的.
我已经尝试更新作曲家并使PhpStorm中的缓存/重启无效.
编辑1
我当然不应该从作曲家文件中手动删除与旧插件相关的代码行.
composer diagnose: 检查composer.json:FAIL require.cakephp/plugin-installer:应该避免未绑定版本约束(*)检查平台设置:FAIL PHP使用的OpenSSL库(0.9.8y)不支持TLSv1.2或TLSv1 0.1.如果可能,您应该将OpenSSL升级到1.0.1或更高版本.检查git设置:OK检查http连接到packagist:警告:通过http访问packagist.org这是一个不安全的协议.
由于项目不是太旧,它可能是最简单的方法,只需完全删除它并从头开始重新启动或是否有一个简单的解决方案?
这些行在技术上被错误地突出显示为错误,甚至在您修改代码之前它们都被突出显示为错误.
代码将特定对象和作用域绑定到闭包,在这种情况下,它将绑定$loader对象(实例ClassLoader)与ClassLoader::class作用域.这将导致闭包以$loader一种使私有方法对其可见的方式绑定到对象,因此在运行时不会出错.
所以问题只是PhpStorm解析器不够智能(尚未)识别这一点.
另见http://www.php.net/manual/en/closure.bind.php
就你的其他作曲家问题而言,供应商文件应该总是可以安全删除,即vendor文件夹通常应该只包含通过作曲家安装的代码,这意味着万一你搞砸了,你应该可以简单地删除vendor文件夹,根据需要修复composer.json文件(并删除composer.lock文件),然后再次运行composer update或composer install命令.