Penggunaan Single Action Controller di Laravel

Mungkin kita pernah membuat suatu controller di Laravel yang memiliki spesifik hanya satu fungsi (baca:method) saja.

Biasanya pemanggilan controller akan menyebutkan juga nama methodnya (NamaController@NamaMethod)

Apakah bisa dibuat lebih simple ? Tentu saja bisa.

Bagaimana caranya ?

Disinilah kita dapat menggunakan magic method php, __invoke().

Dengan menggunakan __invoke(),  kita bisa ‘invoke’ instance dari sebuah controller (baca:class) dan memanggilnya seperti function.

Di Laravel, prosedur seperti ini disebut dengan Single Action Controller.

Dengan menggunakan Single Action Controller, kita bisa mengarahkan route ke single controller.

Di contoh berikut, saya akan berikan contoh penggunaan single action controller.

Pertama, kita buat dahulu controller dengan perintah :

php artisan make:controller ContohController

Lalu di ContohController, kita berikan method yang akan diproses (dalam contoh ini adalah menampikan ‘Halo Budi Setiawan’.

 <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ContohController extends Controller

{

            //

            public function __invoke(Request $request)

            {

                  return ‘Halo ’.$request->get(‘nama’);

            }

}

Lalu di kita tambahkan route di routes/web.php

Route::get(‘contoh’,’App\Http\Controllers\ContohController’);

Jalankan php artisan serve.

Lalu akses page yang kita buat di 127.0.0.1:8000/contoh?nama=Budi Setiawan

Dan magic word Halo Budi Setiawan akan muncul di halaman browser kesayangan kita.

Demikian artikel cara penggunaan single action controller di Laravel.

Terima kasih