Laravel membuat para developer semakin flexible dengan adanya fitur ini, jadi kita bisa membuat Facade custom yang akan kita buat sendiri, disini saya hanya akan menerangkan bagaimana cara ServiceProvider dan Facade Custom dan contoh penggunaannya.
Pertama kita buat ServiceProvider terlebih dahulu contoh kita akan menarik data dari Api Raja Ongkir Api : dan kita akan membuat file RajaongkirServiceProvider
php artisan make:provider RajaongkirServiceProvider
Ubah file RajaongkirServiceProvider
di folder app/Providers
dan ubah menjadi seperti ini :
... use App\Services\RajaongkirService; ... /** * Register services. * * @return void */ public function register() { $this->app->singleton('Rajaongkir', function ($app) { return new RajaongkirService; }); } ...
dan tambahkan file class Rajaongkir.php
di folder Facades yang kita buat juga jadi hasilnya nanti akan ada di App\Facades\Rajaongkir.php
<?php namespace App\Facades; use Illuminate\Support\Facades\Facade; class Rajaongkir extends Facade { protected static function getFacadeAccessor() { return 'Rajaongkir'; } }
dan sekarang kita buat file untuk Servicenya di folder Services yang nanti akan jadi seperti ini Services/RajaongkirService.php
dan nanti isinya seperti ini :
<?php namespace App\Services; use Illuminate\Support\Facades\Http; class RajaongkirService { public function __construct() { $this->key = 'apikey'; $this->url = 'https://api.rajaongkir.com/starter'; } public function getProvince() { // Kita gunakan facade Http untuk http client $data = Http::withHeaders([ 'key' => $this->key])->acceptJson()->get($this->url.'/province'); return $data->json(); }
Cara menggunakan Facade diatas nanti kita terapkan di controller dengan contoh kita akan membuat / memunculkan Provinsi yang ada di rajaongkir, pertama kita akan buat dulu controllernya dengan :
php artisan make:controller ProvinceController
Lalu di index method kita akan memanggil facade tersebut
<?php namespace App\Http\Controllers\Member; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Facades\Rajaongkir; class ProvinceController extends Controller { public function index() { $province = Rajaongkir::getProvince(); dd($province); } }
nah sekarang kita sudah bisa mengkonsumsi api dari Rajaongkir. kamu juga bisa kembangkan fitur ini untuk integrasi api, integrasi lainnya yang tak terbatas.
Semoga bermanfaat..