laravel 5 : 扩展 Facade

laravel 5 : Extend a Facade

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

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

例如:

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

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

如有任何线索或想法,我们将不胜感激。

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

您可以像这样创建/扩展 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

希望对您有所帮助!

假设您在 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,

现在应该一切正常了。