首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改DB Facade的名称

更改DB Facade的名称
EN

Stack Overflow用户
提问于 2015-05-28 23:06:51
回答 2查看 614关注 0票数 1

我在一个现有的PHP应用程序中使用Lumen。

全局命名空间中存在冲突。现有的应用程序在全局命名空间中也有一个DB类,这与Lumen的DB类冲突。

代码语言:javascript
复制
// 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');就可以为我解决问题,但我不想编辑供应商文件夹中的代码。

有没有什么我可以通过编程来改变它的方法?

EN

回答 2

Stack Overflow用户

发布于 2015-05-29 01:05:33

好的。我想我现在有一个变通办法。

在bootstrap/app.php中,取消注释或删除以下行

代码语言:javascript
复制
// $app->withFacades();

并替换为。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-09-25 20:46:15

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

代码语言:javascript
复制
$app->withFacades(
    true, // $aliases parameter set to true (default)
    [
    'Illuminate\Support\Facades\DB' => 'LumenDB',
    ] // array of $userAliases
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30510372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档