Tutorial PHP OOP Part 14 : Menggunakan Interface dan Implements
Interface yang saya maksud disini adalah sebutan singkat saya untuk Object Interface. Interface merupakan istilah untuk konsep yang akan diimplementasi pada class. interface mengijinkan kita membuat method yang harus diimplementasi pada class tanpa harus mendefinisikan bagaimana isi dari method tersebut.
Sekilas Interface memang mirip dengan class abstrak, namun prinsip dan penerapannya berbeda karena Interface memang bukan sebuah class. Interface lebih bertujuan membuat konsep method yang seragam dari pada membuat kerangka class seperti class abstrak.
Membuat Interface
Untuk membuat interface kita menggunakan keyword "interface", diikuti dengan nama interface kemudian sepasang kurung kurawal {} yang berisi konsep-konsep method yang akan diimplementasi nantinya.- <?php
- interface namaInterface
- {
- public function namaMethod();
- ...
- }
- ?>
- <?php
- interface konsepRumus
- {
- public function luas_persegi();
- public function luas_segitiga();
- public function luas_lingkaran();
- }
- ?>
Mengimplementasi Interface
Untuk mengimplementasi interface pada class, kita menggunakan keyword "implements" dibelakang nama class.- <?php
- class namaClass implements namaInterface
- {
- public function namaMethod() {
- ...
- }
- }
- ?>
Contoh :
- <?php
- <?php
- interface konsepRumus {
- public function luas_persegi();
- public function luas_segitiga();
- public function luas_lingkaran();
- }
- class Rumus implements konsepRumus {
- public function luas_persegi() {
- return "ini luas persegi";
- }
- public function luas_segitiga() {
- return "ini luas segitiga";
- }
- public function luas_lingkaran() {
- return "ini luas lingkaran";
- }
- }
- $rumus = new Rumus;
- echo $rumus->luas_persegi()."<br/>";
- echo $rumus->luas_segitiga()."<br/>";
- echo $rumus->luas_lingkaran()."<br/>";
- ?>
Hal-hal yang perlu diperhatikan dalam menggunakan Interface dan Implements
Dalam menggunakan interface dan implements ada beberapa aturan dan kondisi yang harus kita patuhi, diantaranya :1. Nama class tidak boleh sama dengan nama interface
Hal ini karena PHP mendeteksi interface sebagai class, meskipun pada kenyataannya hanya berupa konsep saja. Jika nama class dan interface sama maka akan muncul error "Fatal error: Cannot redeclare class", artinya ada pendeklarasian class kembali.- <?php
- interface Rumus {
- public function luas_persegi();
- }
- class Rumus implements Rumus {
- public function luas_persegi() {
- return "ini luas persegi";
- }
- }
- ?>
Fatal error: Cannot redeclare class Rumus in /home/sabrina/www/php/index.php on line 8
2. Method pada interface harus diset public
Karena sifatnya yang terbuka dan harus diimplementasi maka semua method pada interface harus diset public atau tidak ditulis sama sekali (sama juga berarti public). Jika diset private atau protected akan muncul error "Fatal error: Access type for interface method".- <?php
- interface Rumus {
- private function luas_persegi();
- }
- class Rumus implements Rumus {
- public function luas_persegi() {
- return "ini luas persegi";
- }
- }
- ?>
Fatal error: Access type for interface method konsepRumus::luas_persegi() must be omitted in /home/sabrina/www/php/index.php on line 3
3. Interface tidak boleh memiliki method normal
Sebagaimana fungsi interface yang bertujuan membuat konsep bukan class, maka pada interface tidak boleh ada method normal. Hal inilah salah satu yang membedakan antara interface dan class abstrak.Jika hal ini terjadi akan muncul error "Fatal error: Interface function cannot contain body ".
- <?php
- interface Rumus {
- private function luas_persegi();
- public function luas_segitiga() {
- return "ini luas segitiga";
- }
- }
- class Rumus implements Rumus {
- public function luas_persegi() {
- return "ini luas persegi";
- }
- }
- ?>
Fatal error: Interface function konsepRumus::luas_segitiga() cannot contain body in /home/sabrina/www/php/index.php on line 6
4. Interface bisa diturunkan
Seperti halnya class, interface juga bisa diturunkan. Untuk membuat interface turunan kita juga menggunakan keyword extends seperti pada class.- <?php
- interface konsepRumus {
- public function luas_persegi();
- }
- interface konsepRumusBangunDatar extends konsepRumus{
- public function keliling_persegi();
- }
- class Rumus implements konsepRumusBangunDatar {
- public function luas_persegi() {
- return "ini luas persegi";
- }
- public function keliling_persegi() {
- return "ini keliling persegi";
- }
- }
- $rumus = new Rumus;
- echo $rumus->luas_persegi()."<br/>";
- ?>
5. Interface bisa memiliki konstanta
Interface juga bisa memiliki konstanta seperti class. Untuk mengakses konstanta pada interface sama dengan mengakses konstanta pada umumnya yaitu menggunakan operator :: (titik dua ditulis dobel).- <?php
- interface konsepRumus {
- const pi=3.14;
- public function luas_persegi();
- }
- echo konsepRumus::pi."<br/>";
- ?>
6. Sebuah class bisa mengimplementasi banyak interface sekaligus
Jika pada abstrak berlaku satu class abstrak untuk satu class, maka pada interface tidak. Kita bisa mengimplementasi beberapa interface sekaligus dalam satu class.- <?php
- interface konsepRumus1 {
- public function luas_persegi();
- }
- interface konsepRumus2 {
- public function luas_segitiga();
- }
- class rumus implements konsepRumus1,konsepRumus2 {
- public function luas_persegi() {
- return "ini luas persegi";
- }
- public function luas_segitiga() {
- return "ini luas segitiga";
- }
- }
- ?>
TINN Muffler: A Tribute to American Pie - Titanium
BalasHapusAmerican Pie Tribute - TINN Muffler: titanium bong A Tribute to American Pie titanium phone case · American Pie Tribute 2014 ford focus titanium hatchback - TINN tube supplier Muffler: 2021 ford escape titanium hybrid A Tribute to American Pie.
x709v6lunpk947 horse dildo,sex chair,love dolls,love dolls,realistic vibrators,Butterfly Vibrator,cheap sex toys,dildo,male sexy toys f865u5zaruk074
BalasHapus