
Pada Kesempatan ini saya menjelaskan bagaimana pengimplementasiannya Method Chaining pada Kasus Total Harga Pada Sistem Kasir.
Method chaining yang sering digunakan untuk mengikat / merantai method. Konsep ini kita dapat memanggil lebih dari satu method untuk satu kali operasi dengan mengolah object yang sama.
Setiap method tersebut berperan mengubah nilai property dalam object tersebut dari satu bentuk ke bentuk lainnya.
Setiap method tersebut berperan mengubah nilai property dalam object tersebut dari satu bentuk ke bentuk lainnya.
Oleh karena itu method tersebut sering disebut mutator.
Manfaat dari Method Chaining dalam kasus ini adalah membuat kode lebih enak dibaca. perhatikan kade dibawah ini :
Manfaat dari Method Chaining dalam kasus ini adalah membuat kode lebih enak dibaca. perhatikan kade dibawah ini :
- // Inisiasi Object
- $data = array(
- 'quantity' => 3,
- 'discount' => 10,
- 'price' => 10000
- );
- // Membuat Grand Total (Tanpa Chaining Method)
- // panggil Class
- $class = new Class();
- $grand_total = $class->sub_total($data['quantity'], $data['price']) +$class->discount($data);
- echo number_format($grand_total);
- // Membuat Grand Total (dengan Chaining Method)
- // panggil Class
- $total = new Class();
- echo number_format($total->sub_total()->discount()->grand_total());
Kita praktekkan :
Buatlah sebuah Class bernama Total yang berfungsi memanipulasi data Array berikut :
- $data = array(
- 'quantity' => 3,
- 'discount' => 10,
- 'price' => 10000
- );
Pada Class tersebut tersebut terdapat 3 Method :
- Inisiasi : mengubah object array menjadi masing-masing property.
- Discount : membuat diskon dari data.
- Grand_total : mengambil nilai yang telah dikalkulasi keseluruhan.
Struktur kodenya seperti ini :
- <?php
- /**
- * Method Chaining - Kasus Total Harga Pada Sistem Kasir
- * Class Total.php
- * @author Vicky Nitinegoro
- */
- class Total
- {
- // Property untuk simpan nilai-nilai mutasi
- protected $object = array();
- private $set_quantity = 1;
- private $set_discount = 0;
- private $set_price = 0;
- private $set_sub_total;
- public function __construct($object)
- {
- // rubah object array menjadi properti
- if(count($object) > 0) :
- $this->inisiasi($object);
- endif;
- $this->set_sub_total = $this->set_price * $this->set_quantity;
- }
- public function inisiasi($params = array())
- {
- // terima object dan ubah ke properti satu-persatu
- if (count($params) > 0)
- {
- foreach ($params as $key => $val)
- {
- if (isset($this->$key))
- {
- $this->$key = $val;
- }
- }
- }
- }
- public function discount()
- {
- // mengihitung discount
- if($this->set_discount != null)
- {
- $this->object = $this->set_discount / 100 * $this->set_sub_total;
- } else {
- $this->object = $this->set_sub_total;
- }
- return $this;
- }
- public function grand_total()
- {
- // cek apakah masih berupa array apa tidak
- // kalo iya tampilkan subtotal saja tanpa dikurangi discount
- if(is_array($this->object))
- {
- return $this->set_sub_total;
- } else {
- return $this->object;
- }
- }
- }
- // Data yang akan diolah
- $data = array(
- 'set_quantity' => 3,
- 'set_discount' => 10, // discount 10%
- 'set_price' => 10000
- );
- // Panggil Class
- $total = new Total($data);
- // Tampilkan tanpa discount
- echo number_format($total->grand_total()); // Output : 30,000
- echo "<hr>";
- // tampilkan dengan discount
- echo number_format($total->discount()->grand_total()); // Output : 3,000
Saya kira dari kode tersebut sudah bisa dipahami, silahkan tambahkan method lainnya jika dirasa kurang.
Demikian Contoh Penggunaan Method Chaining sederhana. :-)