Interfaces memungkinkan kita mendefinisikan kontrak yang harus diikuti oleh sebuah class. Interface hanya berisi deklarasi method dan konstanta, tanpa implementasi. Setiap class yang mengimplementasikan sebuah interface wajib menyediakan implementasi untuk semua method yang telah didefinisikan dalam interface tersebut.
interface NamaInterface { public function namaMethod(); }
Untuk mengimplementasikan interface dalam class, gunakan kata kunci implements. Jika ada lebih dari satu interface, pisahkan dengan koma. Contoh implementasi interface:
implements
Petunjuk:
RUN
<?php interface Printable { public function printOutput(); } class ImageComponent implements Printable { public function printOutput() { echo "Mencetak gambar..."; } } // Penggunaan $obj = new ImageComponent(); $obj->printOutput(); ?>
Kode di atas menunjukkan cara mengimplementasikan interface Printable dalam class ImageComponent menggunakan kata kunci implements. Interface mendefinisikan method printOutput() yang wajib diimplementasikan oleh class mana pun yang menggunakannya. Dalam class ImageComponent, method tersebut diisi dengan perintah echo "Mencetak gambar...". Ketika objek dari class ini dibuat dan method printOutput() dipanggil, maka akan ditampilkan teks "Mencetak gambar...". Ini mencerminkan prinsip dasar OOP, yaitu kontrak melalui interface untuk menjamin konsistensi implementasi.
Printable
ImageComponent
printOutput()
echo "Mencetak gambar..."
Sebuah interface dapat mewarisi satu atau lebih interface lainnya selama tidak ada method dengan nama yang sama.
<?php interface A { public function methodA(); } interface B { public function methodB(); } interface C extends A, B { public function methodC(); } class MyClass implements C { public function methodA() { echo "Method A dipanggil"; } public function methodB() { echo "Method B dipanggil"; } public function methodC() { echo "Method C dipanggil"; } } // Penggunaan $obj = new MyClass(); $obj->methodA(); $obj->methodB(); $obj->methodC(); ?>
Kode ini menunjukkan bagaimana interface dapat saling diturunkan (inheritance antarmuka) dan kemudian diimplementasikan oleh sebuah class. Interface C mewarisi A dan B, sehingga interface C mewajibkan semua class yang mengimplementasikannya untuk menyediakan implementasi method methodA(), methodB(), dan methodC(). Class MyClass mengimplementasikan interface C, sehingga harus mendefinisikan ketiga method tersebut. Saat objek $obj dibuat dari MyClass dan masing-masing method dipanggil, akan ditampilkan output yang sesuai. Ini menegaskan bahwa PHP mendukung pewarisan interface ganda dan implementasi kontrak secara menyeluruh.
C
A
B
methodA()
methodB()
methodC()
MyClass
$obj
Kita bisa membuat interface untuk kendaraan yang memiliki method start() dan stop().
<?php interface Kendaraan { public function hidupkanMesin(); } interface KendaraanDarat extends Kendaraan { public function jumlahRoda(); } class Mobil implements KendaraanDarat { public function hidupkanMesin() { echo "Mesin mobil dihidupkan."; } public function jumlahRoda() { return 4; } } // Penggunaan $myCar = new Mobil(); $myCar->hidupkanMesin(); echo $myCar->jumlahRoda(); ?>
Kode di atas menunjukkan bagaimana kita bisa menggunakan interface untuk memastikan bahwa semua kendaraan memiliki method hidupkanMesin() dan jumlahRoda(), sehingga memudahkan pengembangan dan pemeliharaan kode dalam skala besar. Interface KendaraanDarat mewarisi Kendaraan, dan class Mobil mengimplementasikan semua kontrak method yang diperlukan.
interface
hidupkanMesin()
jumlahRoda()
KendaraanDarat
Kendaraan
Mobil
Untuk menguji pemahaman kamu tentang konsep interface dan implementasinya dalam PHP,
Isilah bagian yang kosong pada kode berikut ini agar program dapat mencetak jenis output dari file!
<?php interface Output { public function generate(); } class FileOutput ___ Output { public function ___() { echo "Output berupa file disimpan."; } } $printer = new FileOutput(); $printer->___(); ?>
Seret potongan kode berikut ke tempat yang kosong: