laravel 5:扩展立面

时间:2016-11-15 16:25:06

标签: php laravel laravel-5 laravel-facade

我需要根据客户端处理不同类型的数据库。

我创建了一个名为 MyDBFacade 的Facade,我可以调用自己的函数。

例如:

MyDBFacade::createDBUser("MyUser"); // will create a DB user whatever I'm using Postgres or SQL Server

是否有可能以我可以添加自己的函数然后调用DB::createUser("MyUser")的方式扩展框架Facade DB ::

任何线索或想法都会受到赞赏。

提前致谢,祝你有愉快的一天。

2 个答案:

答案 0 :(得分:4)

假设您在app/Facades/MyDBFacade.php

中定义自定义外观
<?php

namespace App\Facades;

use Illuminate\Support\Facades\DB;

class MyDBFacade extends DB
{
    // ...
}

您只需更改config/app.php中的单行,即

'DB' => Illuminate\Support\Facades\DB::class,

'DB' => App\Facades\MyDBFacade::class,

现在这一切都应该有效。

答案 1 :(得分:2)

您可以像这样创建/扩展Facade:

<?php namespace YourNameSpace\Facades;

class MyDBFacade extends Illuminate\Support\Facades\DB {

        /**
         * Create your custom methods here...
         */
        public static function anyMethod($active)
        {
            /// do what you have to do
        }

}

然后替换(或将其添加为新的)app/config/app.php

'aliases' => array(
  'MyDBFacade'   =>  'YourNameSpace\Facades\MyEventFacade::class',
),

请记住最后执行composer dump-autoload

希望这有帮助!