Search code examples
phplaravellaravel-5laravel-facade

laravel 5 : Extend a Facade


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.


Solution

  • 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.