Press "Enter" to skip to content

Apa Itu Facades Laravel Dan Bagaimana Cara Membuatnya?

fadli 1

Facades Laravel – Haloo semuanya, kali ini kita akan membahas tentang salah satu fitur yang ada pada laravel, yaitu facades.. Kita akan mencari tau apa itu facades? serta bagaimana cara membuat nya?

Facades Laravel

Apa itu facades? Singkat nya, facades itu adalah sebuah fitur yang mampu membuat sebuah method biasa menjadi seolah-olah seperti method static..

Ingat yaa, ini bukan method static, tapi hanya method object biasa yang dengan facades kita bisa memanggil nya seperti sebuah method static..

Jika kalian belum mengetahui apa itu method static pada PHP, silahkan buka postingan sebelumnya : Mengenal Static Keyword pada PHP.

Tujuan nya apa? yaitu kita bisa mempersingkat cara pemanggilan object/code nya tanpa harus menginstansiasi class nya terlebih dahulu..

Biar lebih paham, kita langsung contohkan saja:

Misal kita punya sebuah class dengan nama Sayuran seperti berikut:

<?php

namespace App\Utility;

class Sayuran
{
    public function tomat()
    {
        return 'ini adalah tomat';
    }

    public function bawang()
    {
        return 'ini adalah bawang';
    }
}

Nah biasanya, jika kita ingin memanggil class tersebut, atau menggunakan method2 yang ada didalam class tersebut, kita harus menginstansiasi class nya terlebih dahulu, atau membuat object untuk class tersebut terlebih dahulu dengan kata kunci new.

Setelah object nya terbentuk, maka kita bisa mengakses property/method yang ada didalam class nya.

<?php

use App\Utility\Sayuran;

$data = new Sayuran();
$tomat = $data->tomat();
$bawang = $data->bawang();
....

Pada script diatas, kita membuat sebuah object dari class Sayuran dengan kata kunci new yang ditampung kedalam variable $data.

Maka ketika kita memanggil method tomat() yang ada didalam class Sayuran, kita bisa gunakan perintah $data->tomat().

Nah kalo dengan Facade, kita bisa memanggil method tomat() atau method bawang() tanpa harus membuat object dari class nya terlebih dahulu.

Contoh:

<?php 

use App\Utility\Sayuran;

$tomat = Sayuran::tomat();
$bawang = Sayuran::bawang();
....

Terlihat lebih simple kan? Kita gak perlu lagi membuat object dari class nya terlebih dahulu.

Tapi kita bisa langsung memanggil method nya seperti memanggil sebuah constanta atau memanggil sebuah method static, yaitu menggunakan double colon (::).

Karena memang pada dasar nya facade adalah implementasi dari sebuah class dengan method static yang memanggil method pada object lain yang telah di facade menggunakan laravel service container.

Cara membuat Facade

Cara membuat facades cukup mudah, misal kita punya sebuah class dengan nama Makanan yang ingin kita buatkan facade nya untuk class tersebut:

<?php

namespace App\Test;

class Makanan
{
    public function buahan()
    {
        return 'mangga harum manis';
    }

    public function sayuran()
    {
        return 'brokoli';
    }
}

Buat class yang meng-extends Facade

Kemudian kita buat class baru lagi misal dengan nama Makananfacade seperti berikut:

<?php

namespace App\Test\Facades;

use Illuminate\Support\Facades\Facade;

class Makananfacade extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'Makananfacade';
    }
}

Kalian perhatikan script diatas, class tersebut meng-extends sebuah class parent dengan nama Facade yang berada di Illuminate\Support\Facades\Facade.

Kemudian kita perlu meng-override sebuah method static dengan nama getFacadeAccessor() dengan visibility protected yang didalam nya me return sebuah string ‘Makananfacade’.

String tersebutlah yang nanti nya akan kita binding terhadap class yang ingin kita facade kan dengan menggunakan service container laravel.

Agar tidak terjadi kekeliruan, kita samakan saja return string nya dengan nama class nya, yaitu Makananfacade.

Binding Facades didalam service provider

Untuk point ini, kalian bisa membuat service provider sendiri atau bisa juga menggunakan service provider yang sudah ada.

Agar lebih simple, kita binding facades nya menggunakan service provider yang sudah ada saja, yaitu didalam file “app/Providers/AppServiceProvider”.

Didalam method/function register(), kalian tambahkan script seperti berikut:

....
  public function register()
  {
    ....
    $this->app->bind('Makananfacade', function () {
      return new Makanan();
    });
    ....
  }
....

Pada baris ke-5 diatas, kita membinding/menghubungkan string Makananfacade yang dihasilkan dari class Makananfacade method getFacadeAccessor() terhadap class Makanan yang sebelumnya sudah kita buat.

Test Facade nya

Seharusnya sekarang kita sudah bisa memanggil object2 yang ada di class Makanan melalui facade Makananfacade.

Sekarang kita akan coba test jalankan facade nya.

Kita buat route baru seperti berikut:

use App\Test\Facades\Makananfacade;
....
Route::get('test-facade', function () {
    $data = Makananfacade::buahan();
    return $data;
});
....

Kemudian kita coba akses di browser, seharusnya akan muncul seperti berikut:

Apa Itu Facades Laravel Dan Bagaimana Cara Membuatnya?

Bagaimana? Mudah bukan? Kita bisa memanggil object yang ada didalam class tertentu tanpa harus menginstansiasi class nya terlebih dahulu.

Support Us

Jika artikel ini bermanfaat untuk kamu, membantu menyelesaikan masalah yang sedang kamu hadapi, kamu juga bisa dukung kami dengan mengunjungi halaman berikut: https://saweria.co/sangcahayaid

Terima kasih..

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: