Tutorial Belajar OOP PHP Part 16 (INterface)
Tutorial Belajar OOP PHP Part 16 (INterface)
Category: Tutorial PHP
Setelah dalam tutorial sebelumnya kita mempelajari tentang abstract class dan abstract method,
dalam tutorial belajar OOP PHP kali ini kita akan membahas tentang Objek Interface dalam
pemrograman berbasis objek. Object Interface ini sangat mirip dengan Abstract class.
1 <?php
2 interface mouse
3 {
4 //...isi dari interface mouse
}
5
?>
6
Isi dari interface adalah signature method (nama dan parameter method):
1
<?php
2 interface mouse{
3 public function klik_kanan();
4 public function klik_kiri();
5 public function scroll();
public function double_klik();
6 }
7 ?>
8
Untuk menggunakan method kedalam class, kita menggunakan keyword implements, seperti contoh
berikut:
1 <?php
interface mouse{
2 public function klik_kanan();
3 public function klik_kiri();
4 }
5
6 class laptop implements mouse{
7 //... isi dari class laptop
}
8
9
10 class pc implements mouse{
11 //... isi dari class pc
12 }
?>
13
14
Interface adalah ‘perjanjian method’, dimana jika sebuah class menggunakan interface, maka di
dalam class tersebut harus tersedia implementasi dari method tersebut.
Jika di dalam interface mouse terdapat signature method klik_kanan(), maka di dalam class laptop
yang menggunakan interface mouse, harus terdapat method klik_kanan(). Berikut contoh kode
PHPnya:
1
2 <?php
3 interface mouse{
4 public function klik_kanan();
5 public function klik_kiri();
}
6
7 class laptop implements mouse{
8 public function klik_kanan(){
9 return "Klik Kanan...";
10 }
11 public function klik_kiri(){
return "Klik Kiri...";
12 }
13 }
14
15 $laptop_baru = new laptop();
16 echo $laptop_baru->klik_kanan();
17 // Klik Kanan...
?>
18
19
Apabila kita tidak membuat ulang salah satu method yang ada di interface, PHP akan
mengeluarkanerror:
1 <?php
interface mouse{
2 public function klik_kanan();
3 public function klik_kiri();
4 }
5
6 class laptop implements mouse{
7 public function klik_kanan(){
return "Klik Kanan...";
8 }
9 }
10
11
12 $laptop_baru = new laptop();
13 // Fatal error: Class laptop contains 1 abstract method
14 // and must therefore be declared abstract
15 // or implement the remaining methods (mouse::klik_kiri)
?>
16
17
1
2 <?php
3 interface mouse{
4 public function klik_kanan();
5 protected function klik_kiri();
}
6
7 class laptop implements mouse{
8 public function klik_kanan(){
9 return "Klik Kanan...";
10 }
11 public function klik_kiri(){
return "Klik Kiri...";
12 }
13 }
14
15 $laptop_baru = new laptop();
16 // Fatal error: Access type for interface
17 // method mouse::klik_kiri() must be omitted
?>
18
19
Di dalam class yang menggunakan interface, method yang berasal dari interface juga harus memiliki
hak akses public. Kita tidak bisa mengubahnya menjadi protected atau private.
1 <?php
interface mouse{
2
public function klik_kanan();
3 public function klik_kiri();
4 }
5
6 class laptop implements mouse{
7 public function klik_kanan(){
8
9 return "Klik Kanan...";
10 }
11
12 protected function klik_kiri(){
13 return "Klik Kiri...";
}
14 }
15
16 $laptop_baru = new laptop();
17 // Fatal error: Access level to laptop::klik_kiri()
18 // must be public (as in class mouse)
?>
19
20
Dalam contoh diatas, saya mengubah hak akses method klik_kiri() menjadi protected di dalam class
laptop. Hal ini akan menghasilkan error.
1 <?php
interface mouse{
2
public function klik_kanan();
3 public function klik_kiri();
4 }
5
6 interface mouse_gaming extends mouse{
7 public function ubah_dpi();
}
8
9 class laptop implements mouse_gaming{
10 public function klik_kanan(){
11 return "Klik Kanan...";
12 }
13
14 public function klik_kiri(){
return "Klik Kiri...";
15 }
16
17 public function ubah_dpi(){
18 return "Ubah settingan DPI mouse";
19 }
20 }
21
$laptop_baru = new laptop();
22 echo $laptop_baru->ubah_dpi();
23 // Ubah settingan DPI mouse
24
25
26 ?>
27
28
1
<?php
2 interface mouse{
3 const JENIS = "Laser Mouse";
4 public function klik_kanan();
5 public function klik_kiri();
6 }
7
echo mouse::JENIS;
8 // Laser Mouse
9 ?>
10
Untuk mengakses konstanta dari interface, kita menggunakan perintah
nama_interface::nama_konstanta.
1 <?php
interface mouse{
2
public function klik_kanan();
3 public function klik_kiri(){
4 return "Klik Kiri...";
5 }
6 }
7
class laptop implements mouse{
8 public function klik_kanan(){
9 return "Klik Kanan...";
10 }
11 }
12
13 $laptop_baru = new laptop();
// Fatal error: Interface function
14 // mouse::klik_kiri() cannot contain body
15
16 ?>
17
18
1
2
3 <?php
interface mouse{
4 public function klik_kanan();
5 public function klik_kiri();
6 }
7
8 interface keyboard{
9 public function tekan_enter();
}
10
11 class laptop implements mouse, keyboard{
12 public function klik_kanan(){
13 return "Klik Kanan...";
14 }
15
16 public function klik_kiri(){
return "Klik Kiri...";
17 }
18
19 public function tekan_enter(){
20 return "Tekan Tombol Enter...";
21 }
22 }
23
$laptop_baru = new laptop();
24 echo $laptop_baru->tekan_enter();
25 // Tekan Tombol Enter...
26 ?>
27
28
Dalam contoh diatas saya membuat dua buah interface, yakni mouse dan keyboard.
Kedua interfaceini kemudian digunakan oleh class laptop.