Rabu, 20 Oktober 2021

Inheritace Pada PHP

Inheritance Class

Class-class bisa menurunkan properti dan method yang ada pada class lainya. Class yang diturunkan biasanya disebut subclass sedangkan class yang menurunkanya disebut parent class. Inheritace sendiri bisa digunakan menggunakan kata extends. Seperti dalam penggunaan class pemain dan class kiper

class pemain{

    public $nama;

    public function tendang(){

    echo "tendang bola";

    }

}

class kiper extends pemain{

}

$yusuf = new kiper();

$yusuf -> tendang();

Tampilan Properti Dan Method PHP

Pada artikel sebelumnya kita sering menggunakan kata public sebelum membuat properti dan method pada class Buku di file yang kita bernama buku.php. Kata public tersebut menandakan bahwa setiap orang dari manapun bisa mengaksesnya. Ini disebut tampilan properti dan method atau visibility properti dan method. PHP sendiri memiliki 3 tampilan dalam menampilkan properti dan method yakni:

Jenis Visibility/TampilanHak akses
privateHanya mengizinkan untuk mengakses member dari class yang sama. Jika class A dan B menginstance ke class C. Maka class A bisa mengakses class B maupun sebaliknya.
protectedMemberikan akses ke member class ketika proses inheritance
publicSemua class dan file bisa mengaksenya tanpa terkecuali

Mari kita buat class Konsumen pada file konsumen.php dengan menggunakan private, agar data dari konsumen kita tidak bisa dilihat oleh sembarang orang.

<?php

class Konsumen {

 private $id;

 private $namadpn;

 private $namablkg;

 private $email;

 public function __construct(

 int $id,

 string $namadpn,

 string $namablkg,

 string $email

 ) {

 $this->id = $id;

 $this->namadpn = $namadpn;

 $this->namablkg = $namablkg;

 $this->email = $email;

 }

 public function getId(): id {

 return $this->id;

 }

 public function getNamadpn(): string {

 return $this->namadpn;

 }

 public function getNamablkg(): string {

 return $this->namablkg;

 }

 public function getEmail(): string {

 return $this->email;

 }

 public function setEmail(string $email) {

 $this->email = $email;

 }

}

Lalu buatlah class buku seperti ini:

<?php

class Buku {

 private $isbn;

 private $judul;

 private $pengarang;

 private $tersedia;

 public function __construct(

 float $isbn,

 string $judul,

 string $pengarang,

 int $tersedia = 0

 ) {

 $this->isbn = $isbn;

 $this->judul = $judul;

 $this->pengarang = $pengarang;

 $this->tersedia = $tersedia;

 }

 public function getIsbn(): float {

 return $this->isbn;

 }

 public function getJudul(): string {

 return $this->judul;

 }

 public function getPengarang(): string {

 return $this->pengarang;

 }

 public function tersedia(): int {

 return $this->tersedia;

 }

 public function getPrintableTitle(): string {

 $result = '<i>' . $this->judul . '</i> - ' . $this->pengarang;

 if (0>$this->tersedia) {

     $result .= ' <b>Tidak tersedia</b>';

 }

 return $result;

 }

 public function getCopy(): bool {

 if ($this->tersedia < 1) {

 return false;

 } else {

 $this->tersedia--;

 return true;

 }

 }

 public function addCopy() {

 $this->tersedia++;

 }

}

?>

Kemudian untuk menggunakanya kita menggunakan class init.php dengan code sebagai berikut:

<?php

required_once("/buku.php");

required_once("/konsumen.php");

$buku1 = new Buku(9785267006323,"1984", "George Orwell", 12);

$buku2 = new Buku(9780061120084,"To Kill a Mockingbird", "Harper Lee", 2);

$konsumen1 = new Konsumen(1, 'John', 'Tor', '[email protected]');

$konsumen2 = new Konsumen(2, 'Mary', 'Vania', '[email protected]');

?>

Dengan demikian kode yang kamu buat lebih rapi dan mudah untuk digunakan.

PHP Interface

Sebuah interface atau antarmuka pada php yang digunakan untuk daftar method digunakan untuk setiap class. Tetapi method tidak dijabarkan. Untuk menggunakannya kamu bisa menggunakan kata kunci implements. Buatlah file bernama implementasi.php dengan script kode sebagai berikut:

<?php

interface bukuInterface{

public function tersedia();

}

class Buku implements bukuInterface{

public $tersedia;

public function __construct(int $tersedia){

$this->tersedia = $tersedia;

}

public function tersedia(){

if ($this->tersedia > 0){

echo "tersedia";

}

}

}

$bukuDongeng = new Buku(12);

$bukuDongeng -> tersedia();

?>

static dan final Method / Properti

static adalah kata kunci yang digunakan untuk mendefinisikan static method atau properti yang bisa diakses tanpa membuat suatu object di class tersebut.

class Konsumen{

static $nama = "konsumen baru";

static function getNama(){

echo self::$nama;

}

}

$ucup = new Konsumen();

$ucup::getNama();

Sedangkan kata kunci final didefinisikan method atau properti tidak bisa diganti pada childclass. Sehingga tidak bisa diturunkan (inherit) pada yang lain.

class Ayah{

final function gunakanUang(){

echo "Gunakan sebijak-bijaknya";

}

}

class Anak extends Ayah{

public function bermain(){

echo "bermain dengan teman teman";

}

}

Inheritance PHP

Class Abstract

Kata kunci abstrak digunakan untuk membuat class dan method abstrak. Method abstak hanya bisa diguanakan pada abstrak class. Keuntungan abstrak class dapat digunakan hanya ketika diturunkan pada child class, dan harus mengimplementasikan semua abstrak method.

abstract class AdminFee{

abstract public function pembayaran($bayar);

protected function addFee(){

return 2;

}

}

class Total extends AdminFee{

public function pembayaran($bayar){

return $this->addFee() + $bayar;

}

}

$transaksi = new Total();

echo $transaksi->pembayaran(6000); //menampilkan 6002

Tidak ada komentar:

Posting Komentar