Berkenalan dengan Facades laravel dan cara membuat Facades pada Laravel

Thumbnail image

Pada tutorial kali ini kita akan berkenalan dengan Facades yang ada di dalam Laravel dan kita akan belajar membuat Facades.

Apa itu Facades?

Facades adalah fitur untuk memanipulasi Object menjadi Static di dalam sebuah class yang berguna untuk mempersingkat Code yang kita buat tanpa harus membuat Object terlebih dahulu.

Contoh:

Misal kita punya class dengan nama Kendaraan

<?php

namespace App\Repositories;

class Kendaraan
{

    public function merek()
    {
        return "Merek Honda";
    }

    public function tahun()
    {
        return "Tahun 2019";
    }
}

Pada umumnya pada saat kita memanggil function merek atau tahun, kita harus membuat Object Terlebih dahulu dari class Kendaraan

<?php
use App\Repositories\Kendaraan;

$kendaraan = new Kendaraan();
echo $kendaraan->merek();
echo $kendaraan->tahun();

pada kodingan di atas adalah contoh kalau kita memanggil function merek di dalam class Kendaraan dengan cara membuat Object Terlebih dahulu menggunakan perintah “new Kendaraan()".

Dengan facade pemanggilan function akan lebih singkat menjadi seperti:

<?php
echo Kendaraan::merek();
echo Kendaraan::tahun();

Kita tidak perlu membuat Object terlebih dahulu untuk memanggil method di dalam class tanpa harus membuat static method.

Cara membuat Facades

Buatlah class dengan nama “app/Repositories/Kendaraan” seperti pada contoh dibawah ini

<?php

namespace App\Repositories;

class Kendaraan
{

    public function merek()
    {
        return "Merek Honda";
    }

    public function tahun()
    {
        return "Tahun 2019";
    }
}

kemudian buat file “app/facades/Kendaraan” seperti

<?php

namespace App\Repositories;

use Illuminate\Support\Facades\Facade;

class Kendaraan extends Facade
{

    public static function getFacadeAccessor(){
        return 'kendaraan';
    }

}

fungsi getFacadeAccessor ini nanti yang akan di Bind menggunakan Service Container yang ada di dalam Laravel.

Daftarkan Facades ke dalam Service Provider

Kemudian daftarkan Facade yang kita buat ke dalam Service Provider atau “app/Providers/AppServiceProvider”

<?php

namespace App\Providers;

use App\Repositories\Kendaraan;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind('kendaraan',function(){
            return new Kendaraan();
        });
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}

Pada saat ini kita sudah berhasil membuat Facade, selanjutnya adalah kita akan coba Test Facade Kendaraan yang sudah kita buat dengan memanggil di route secara langsung.

edit file “routes/web.php”

<?php

use App\Facades\Kendaraan;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('/test-facade', function () {
    return Kendaraan::merek();
});

Kemudian coba jalankan Laravel dan buka browser dan masukan URL /test-facade

Download Repository

Facade Example

https://github.com/mister-coding/laravel-facade-example