我在一个现有的PHP应用程序中使用Lumen。
全局命名空间中存在冲突。现有的应用程序在全局命名空间中也有一个DB类,这与Lumen的DB类冲突。
// in vendor/laravel/lument-framework/src/Appliction.php
public function withFacades()
{
Facade::setFacadeApplication($this);
if (! static::$aliasesRegistered) {
static::$aliasesRegistered = true;
class_alias('Illuminate\Support\Facades\App', 'App');
class_alias('Illuminate\Support\Facades\Auth', 'Auth');
class_alias('Illuminate\Support\Facades\Bus', 'Bus');
class_alias('Illuminate\Support\Facades\DB', 'DB');
...
}
}如果我更改class_alias('Illuminate\Support\Facades\DB','LumenDB');就可以为我解决问题,但我不想编辑供应商文件夹中的代码。
有没有什么我可以通过编程来改变它的方法?
发布于 2015-05-29 01:05:33
好的。我想我现在有一个变通办法。
在bootstrap/app.php中,取消注释或删除以下行
// $app->withFacades();并替换为。
class_alias('Illuminate\Support\Facades\App', 'App');
class_alias('Illuminate\Support\Facades\Auth', 'Auth');
class_alias('Illuminate\Support\Facades\Bus', 'Bus');
class_alias('Illuminate\Support\Facades\DB', 'LumenDB');
...
...
class_alias('Illuminate\Support\Facades\Validator', 'Validator');因此,我们将手动注册外观,而不是调用withFacades()函数。
发布于 2017-09-25 20:46:15
在新版本的Laravel/Lumen中,正确的方法是将一个“用户别名”数组作为第二个参数传递给$app->withFacades()方法。
$app->withFacades(
true, // $aliases parameter set to true (default)
[
'Illuminate\Support\Facades\DB' => 'LumenDB',
] // array of $userAliases
);https://stackoverflow.com/questions/30510372
复制相似问题