Berkenalan dengan Facades laravel dan cara membuat Facades pada Laravel
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