【发布时间】:2021-04-27 07:36:26
【问题描述】:
我升级了 php 版本,现在从 vendor/illuminate/support/ServiceProvider.php 调用 loadViewsFrom 方法 生成错误,因为 $this->app->config['view'] 不是数组。
protected function loadViewsFrom($path, $namespace)
{
if (is_array($this->app->config['view']['paths'])) {
foreach ($this->app->config['view']['paths'] as $viewPath) {
if (is_dir($appPath = $viewPath.'/vendor/'.$namespace)) {
$this->app['view']->addNamespace($namespace, $appPath);
}
}
}
$this->app['view']->addNamespace($namespace, $path);
}
如何在不升级 laravel 版本且不修改供应商文件的情况下解决此问题?
我试图从 composer autoload 覆盖地图类并运行 composer dump-autoload,但没有成功。
我的作曲家是这样的:
...
"autoload": {
"exclude-from-classmap": ["vendor/illuminate/support/ServiceProvider.php"],
"psr-4": {
"App\\": "app/",
"Illuminate\\": "app/illuminate/"
}
},
...
在 app/illuminate/support 我添加了我的自定义 ServiceProvider.php。
另外,我尝试在 bootstrap/app.php 中映射:
$app->singleton(
Illuminate\Support\ServiceProvider::class,
App\illuminate\support\ServiceProvider::class
);
供应商类仍在使用。
框架和php版本:
Laravel Framework Lumen (5.6.4) (Laravel Components 5.6.*)
php version: 7.4.13
【问题讨论】: