I need to handle different types of DB depending on the client.
I created a Facade called MyDBFacade where I can call my own functions.
For example:
MyDBFacade::createDBUser("MyUser"); // will create a DB user whatever I'm using Postgres or SQL Server
Is there a possibility to extends the framework Facade DB:: in a way I could add my own functions and then call DB::createUser("MyUser")
?
Any clue or idea would be appreciate.
Thanks in advance, have a nice day.
Let's say that you define your custom facade in app/Facades/MyDBFacade.php
<?php
namespace App\Facades;
use Illuminate\Support\Facades\DB;
class MyDBFacade extends DB
{
// ...
}
You just need to change single line in config/app.php
, from
'DB' => Illuminate\Support\Facades\DB::class,
to
'DB' => App\Facades\MyDBFacade::class,
And it all should work now.
You can create / extend your Facade like this:
<?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
}
}
And then replace (or add it as a new one) to your app/config/app.php
:
'aliases' => array(
'MyDBFacade' => 'YourNameSpace\Facades\MyEventFacade::class',
),
Remember to execute composer dump-autoload
at the end.
Hope this helps!
来源:https://stackoverflow.com/questions/40614875/laravel-5-extend-a-facade