DEV Community

Cover image for Membuat Facade Custom Laravel dan ServiceProvider
Bogor Desain
Bogor Desain

Posted on

Membuat Facade Custom Laravel dan ServiceProvider

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 
Enter fullscreen mode Exit fullscreen mode

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';
    }
}

Enter fullscreen mode Exit fullscreen mode

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();
    }
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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);
    }
}

Enter fullscreen mode Exit fullscreen mode

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

Top comments (0)