更改DB Facade的名称

时间:2015-05-28 15:06:51

标签: php laravel lumen

我在现有的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');解决了我的问题,但我不想编辑供应商文件夹中的代码。

无论如何我可以通过编程方式更改它吗?

2 个答案:

答案 0 :(得分:1)

好的。我想我现在有一个解决方法。

在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()函数。

答案 1 :(得分:0)

较新版本的Laravel / Lumen中的正确方法是传递一组"用户别名"作为$app->withFacades()方法的第二个参数。

$app->withFacades(
    true, // $aliases parameter set to true (default)
    [
    'Illuminate\Support\Facades\DB' => 'LumenDB',
    ] // array of $userAliases
);