Penggunaan Fluent Method di Laravel

2024-12-03 · 4 mnt baca

Apa itu Fluent Method?Apa itu Fluent Method?

Istilah fluent method atau fluent interface dalam dunia pemrograman adalah sebuah style coding dimata metode dari suatu obyek mengembalikan dirinya sendiri atau obyek lain. Sehingga metode-metode tersebut dapat dirangkai (chained) dalam satu baris code yang berurutan dan mudah dibaca.

Fluency di Laravel dapat diterapkan dalam beberapa cara, salah satunya adalah menggunakan Fluent class bawaan yang disediakan oleh Laravel.

Kelas Fluent adalah sebuah utility class yang disediakan oleh framework Laravel yang memungkinkan Anda membuat dan memanipulasi obyek seperti pemanggilan metode atau mengakses property dengan cara yang lebih ekspresif dan mudah dibaca. Metode fluency ini dapat digunakan saat Anda memiliki sebuah obyek dengan banyak metode dan property.

Apa yang kurang dengan Associative Arrays?Apa yang kurang dengan Associative Arrays?

Associative Arrays atau Array Asosiatif adalah struktur data yang digunakan untuk menyimpan key-value pairs yang umum digunakan dalam aplikasi PHP. Kita akan ambil contoh penggunaan asosiatif array untuk menyimpan atribut sebuah Produk.

$product = [
    'id' => 1,
    'name' => 'Logitech G813',
    'price' => '300000', // IDR
];

Untuk mengakses property yang dimiliki produk tersebut, sintaksisnya seperti ini:

echo $product['name'];

Baris kode diatas akan menghasilkan nama produk "Logitech G813". Sekarang mari kita coba mengakses property yang tidak dimiliki oleh produk ini.

echo $product['sku'];

Seperti yang kita ketahui, property sku tidak ada pada produk. Dalam kasus ini, PHP akan menampilkan ErrorException dengan pesan seperti ini:

Undefined array key "sku"

Mari kita ambil contoh lain. Asumsikan kita mendefinisikan sebuah produk sebagai instance stdClass, bukan asosiatif array.

$product = (object) [
    'id'    => 1,
    'name' => 'Logitech G813',
    'price' => '300000', // IDR
];

Sekarang kita coba mengakses nama produk tersebut menggunakan notasi array, yang mana variabel tersebut sebagai instance stdClass:

echo $product['name'];

Dalam hal ini, PHP akan menampilkan pesan kesalahan seperti:

Cannot use object of type stdClass as array

Jadi, penggunaan asosiatif array atau mencampur obyek dengan aray terkadang dapat berisiko dan tidak efisien. Bukankan lebih baik jika ada sebuah API untuk mengakses array dan obyek dengan cara yang sama tanpa perlu khawatir lagi dengan ErrorException atau penggunaan sintaksis yang tidak valid?

Tangani dengan Laravel FluentTangani dengan Laravel Fluent

Dengan adanya Fluent di Laravel, Anda bisa lebih mudah daripada menggunakan array asosiatif dalam situasi tertentu. Kelas ini memungkinkan Anda mengakses property pada obyek menggunakan notasi titik, alih-alih notasi array.

Kelas Fluent didefinisikan di dalam namespace Illuminate\Support.

<?php

namespace IlluminateSupport;

class Fluent implements Arrayable, ArrayAccess, Jsonable, JsonSerializable
{
    ...
}

Kelas Fluent mengimplementasikan interface Arrayable, ArrayAccess, Jsonable, JsonSerializable. Jadi, Anda dapat mengakses properti menggunakan sintaks array dan juga notasi titik. Mari kita buat beberapa contoh cara menggunakan kelas Fluent ini.

Buat Obyek Menggunakan Metode make()Buat Obyek Menggunakan Metode make()

Untuk membuat sebuah obyek menggunakan kelas Fluet, salah satunya bisa menggunakan metode make():

use IlluminateSupportFluent;

$product = new Fluent::make([
    'id' => 1,
    'name' => 'Logitech G813',
    'price' => '300000', // IDR
]);

Kemudian Anda dapat mengakses property obyek dengan cara seperti ini:

echo $product->name;

// atau bisa juga dengan

echo $product['name'];

Buat Obyek Fluent Dari ArrayBuat Obyek Fluent Dari Array

use IlluminateSupportFluent;

$data = [
    'id' => 1,
    'name' => 'Logitech G813',
    'price' => '300000', // IDR
]

$product = new FLuent($data)

Buat Obyek Fluent Dari Object InstanceBuat Obyek Fluent Dari Object Instance

use IlluminateSupportFluent;

$data = new Product(
    id: 1,
    name: 'Logitech G813',
    price: 3000000, // IDR
);

$product = new FLuent($data);

Dengan API FluentDengan API Fluent

Metode lain untuk membuat instance Fluent adalah dengan menggunaakan API fluent seperti ini:

use IlluminateSupportFluent;

$product = (new FLuent)
    ->id(1)
    ->name('Logitech G813')
    ->price('3000000');

Buat Property Baru dengan Metode with()Buat Property Baru dengan Metode with()

Misalnya, Anda memiliki obyek array dan sudah dijadikan sebagai obyek Fluent, kemudian Anda ingin menambahkan property tambahan. Dalam kasus ini, Anda bisa menggunakan metode with() seperti ini:

$data = new Product(
    id: 1,
    name: 'Logitech G813',
    price: 3000000, // IDR
);

$product = new FLuent($data)
    ->with('sku', '123ABC');

Manipulasi Data ObyekManipulasi Data Obyek

use IlluminateSupportFluent;

$data = new Product(
    id: 1,
    name: 'Logitech G813',
    price: 3000000, // IDR
);

$product = new FLuent($data)
    ->with('sku', '123ABC');

$product['price'] = 2500000;

// atau bisa juga

$product->price = 2500000;

KesimpulanKesimpulan

Kelas Fluent di adalah alat penting untuk bekerja dengan obyek di Laravel dan digunakan secara luas di seluruh kerangka kerja untuk menyediakan cara yang lebih ekspresif dan mudah dibaca dengan gaya chained method.