Memahami Penggunaan Class Abstract Pada PHP
- Published on
- -3 mins read
- Authors
- Name
- Muhammad Iqbal
- @dibaliqaja
Abstract Class
Abstract Class terkadang hanya sebagian diimplementasikan pada penggunaanya. Setidaknya satu method abstrak, yang merupakan method tanpa kode aktual di dalamnya — hanya sebuah nama dan parameternya, dan telah ditandai sebagai "abstract".
Method abstrak hanyalah sebuah definisi fungsi yang berfungsi untuk memberi tahu kita bahwa metode tersebut harus diimplementasikan dalam kelas turunan ( child class ). Contoh kode
<?php
abstract class Brew{ abstract protected function make(); protected function addWater() { return $this->make(); }
protected function addSugar() { return $this->make(); }}
Dan pertanyaanya sekarang adalah, bagaimana kita tahun bahwa suatu method/function yang telah kita buat itu akan dibutuhkan dan harus diimplementasikan?
Lihat kode yang ada dibawah ini yaitu kita coba membuat class bernama Tea
, yang di dalamnya
terdapat beberapa method untuk membuat sebuah teh.
<?php
class Tea{ public function addTea() { var_dump("Dip a tea"); return $this; }
public function addWater() { var_dump("Pour a water"); return $this; }
public function addSugar() { var_dump("Add proper amount of sugar"); return $this; }
public function make() { return $this ->addTea() ->addWater() ->addSugar(); }}
$tea = new Tea();$tea->make();
Sekarang kita coba membuat class baru juga bernama Coffee
<?php
class Coffee{ public function addCoffee() { var_dump("Add amount of coffee"); return $this; }
public function addWater() { var_dump("Pour a water"); return $this; }
public function addSugar() { var_dump("Add proper amount of sugar"); return $this; }
public function make() { return $this ->addCoffee() ->addWater() ->addSugar(); }}
$coffe = new Coffee();$coffe->make();
Oke, kita coba perhatikan di dalam dua class di atas, yaitu Tea
dan Coffee
.
Terdapat beberapa method yang sama seperti addWater
dan addSugar
.
Dalam kasus ini, kita bisa mengimplementasikan sebuah abstract class agar tidak terjadi duplikasi kode yang sudah kita tulis, dan pastinya kode akan terlihat lebih bersih ( clean ). Kita bisa melakukannya sebagai berikut
<?php
abstract class Brew{ protected abstract function seasoning();
public function make() { return $this ->seasoning() ->addWater() ->addSugar(); }
public function addWater() { var_dump("Pour a water"); return $this; }
public function addSugar() { var_dump("Add proper amount of sugar"); return $this; }}
class Tea extends Brew{ public function seasoning() { var_dump("Dip a tea"); return $this; }}
$tea = new Tea();$tea->make();
class Coffee extends Brew{ public function seasoning() { var_dump("Add amount of coffee"); return $this; }}
$coffee = new Coffee();$coffee->make();
Kita membuat abstract class dan menamainya Brew
Di dalam abstract class ini, kita mendeklarasikan beberapa method yang sama digunakan pada class Tea
dan Coffee
kemudian kita membuat sebuah abstract method dengan nama seasoning
.
Sekarang, jika kita membuat class Tea
extend class Brew
, kita akan mendapatkan tiga method yang ditentukan
dan kita harus mendefinisikan method seasoning
.
Begitu juga dengan class Coffee
, dapat dilakukan dengan cara yang sama.
Sekian dan Semoga bermanfaat. Sampai Jumpa.