Our blog

Perbedaan: $request->get() vs $request->input() vs request() vs get_data() pada Laravel

 

Latest Blog's

Perbedaan: $request->get() vs $request->input() vs request() vs get_data() pada Laravel

Laravel     3 weeks ago


Beberapa tahun lalu saya pernah melamar kerja di sebuah startup di Surabaya, gak lama kirim lamaran via Email langsung dapat telp dari perusahaan. Ternyata telp tersebut adalah interview (teknik).

Tanpa persiapan yang memadai akhirnya saya jawab seadanya. Beberapa pertanyaan yang muncul seputar Array, Ajax dan EGCPS di PHP.

Kali ini kita akan membahas sedikit dari pertanyaan yang diajukan kesaya waktu itu.

Bagaimana kita menangani data POST di store() atau update() metode? Sepertinya pertanyaan ini sederhana, tapi sebenarnya ada begitu banyak pilihan!

Coba lihat script dibawah ini!

public function store(Request $request) {
  $email = $request->input('email'); // option 1
  $email = $request->get('email'); // option 2
  $email = $request->email; // even more simple?
  $email = request('email'); // there's also helper
  $email = data_get($request, 'email'); // did you even know this function?
}

Silahkan cek contoh diatas, tahu bedanya apa?

Ok, mari kita abaikan data_get () untuk saat ini, karena tujuan utamanya bukan tentang request - hanya mengambil nilai dari array atau objek bersarang.

Secara umum, untuk kebanyakan kasus, semua metode tersebut melakukan hal yang sama. Perbedaannya adalah dalam kasus yang khusus saja, mari kita lihat perbedaannya.

$request->get() vs $request->input()

Dalam hal ini, input () sedikit lebih powerfull, karena mengambil data bersarang.

$name = $request->input('products.0.name'); // this will work
$name = $request->get('products.0.name'); // this will NOT work
$name = $request->get('products')[0]['name']; // this will work instead

Ingat data_get() yang di sebutkan sebelumnya? Sebenarnya, $request->input() menggabungkan $request->get() dengan helper data_get().

Dokumentasi resmi Laravel menggunakan metode ->input() dan bahkan tidak menyebutkan ->get ().

Properti Langsung

Bagaimana dengan $ request-> email, apakah itu salah?

Sekali lagi, mari kita lihat dokumen resmi:

  • input() method akan bekerja terlepas dari kata kerja HTTP
  • metode input() mengambil nilai dari seluruh permintaan (termasuk string kueri)

request() helper

Ini hanya salah satu helper dari buanyakkk helper yang disiapkan - Lihat Dokumentasi

$request = request();
$value = request('key', $default = null);

Jadi intinya, ini hanya jalan pintas untuk $request->input(). Dan jangan lupa bahwa kamu bisa memberikan nilai default, jika item input kosong.

Jadi, sedikit lebih jelas? Atau tambah bingung?

Di keseharian kita bebas memilih metode mana yang akan digunakan, gak ada aturan baku juga dari Laravel.