Menu
CoddyTech

Pengenalan Interface

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 27 dari 91.

Interface mendefinisikan kontrak yang harus diikuti oleh class. Tidak seperti class abstrak yang dapat berisi method abstrak dan konkret, interface hanya mendeklarasikan signature method tanpa implementasi apa pun. Anggap saja ini sebagai janji: setiap class yang mengimplementasikan interface menjamin akan menyediakan method tertentu tersebut.

Kamu mendefinisikan interface menggunakan kata kunci interface:

<?php
interface Printable {
    public function print();
}

Antarmuka ini menyatakan bahwa setiap class yang mengimplementasikan Printable harus memiliki method print(). Antarmuka ini tidak peduli bagaimana method tersebut bekerja, yang penting method itu ada.

Berikut contoh sederhana yang menunjukkan struktur dasar:

<?php
interface Drivable {
    public function start();
    public function stop();
}

Perhatikan bahwa method interface tidak memiliki body, hanya signature yang diakhiri dengan titik koma. Semua method dalam interface secara implisit bersifat public, jadi kamu tidak dapat menggunakan private atau protected.

Interface sangat berguna karena memungkinkan class yang tidak berkaitan berbagi perilaku yang sama. Car dan Motorcycle mungkin tidak memiliki kesamaan dalam hal pewarisan, tetapi keduanya dapat mengimplementasikan Drivable untuk memastikan bahwa keduanya memiliki method start() dan stop().

Poin Utama: Sebuah interface mendefinisikan method apa saja yang harus dimiliki sebuah class, bukan cara kerjanya. Interface menetapkan kontrak yang harus dipenuhi oleh class yang mengimplementasikannya.

challenge icon

Tantangan

Mudah

Mari kita bangun sistem pesan sederhana yang mengenalkan kamu pada interface. Kamu akan mendefinisikan interface yang menetapkan kontrak tentang cara pesan harus ditangani, sebagai dasar bagi class yang akan kamu buat untuk menerapkannya di pelajaran berikutnya.

Kamu akan mengatur kodemu dalam dua file:

  • Messageable.php: Definisikan interface bernama Messageable yang mendeklarasikan dua signature method: compose($content) untuk membuat pesan, dan deliver() untuk mengirimkannya. Ingat, method interface tidak memiliki isi, hanya signature yang diakhiri dengan titik koma.
  • main.php: Sertakan file Messageable. Untuk memverifikasi bahwa interface-mu telah didefinisikan dengan benar, gunakan fungsi PHP interface_exists() untuk memeriksa apakah Messageable ada. Lalu gunakan ReflectionClass untuk memeriksa interface-mu dan menampilkan daftar method-nya. Buat refleksi dari interface-mu, ambil method-nya menggunakan getMethods() (yang mengembalikan object ReflectionMethod), lalu cetak getName() dari setiap method pada barisnya sendiri.

Output-mu harus menampilkan dua nama method yang dideklarasikan oleh interface-mu, masing-masing pada baris terpisah, sesuai urutan pendefinisiannya.

Tantangan ini berfokus sepenuhnya pada pendefinisian interface: kontrak yang harus dipenuhi oleh class di masa mendatang. Kamu menetapkan method yang harus ada, tanpa mengkhawatirkan cara kerjanya. Implementasinya akan dibahas di pelajaran berikutnya!

Coba sendiri

<?php
// Sertakan file interface Messageable
require_once 'Messageable.php';

// TODO: Gunakan interface_exists() untuk memeriksa apakah interface Messageable ada

// TODO: Buat object ReflectionClass untuk interface Messageable

// TODO: Ambil method menggunakan getMethods()

// TODO: Ulangi setiap method dan cetak nama masing-masing pada baris tersendiri

?>
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler PHP online