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.
Tantangan
MudahMari 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 bernamaMessageableyang mendeklarasikan dua signature method:compose($content)untuk membuat pesan, dandeliver()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 PHPinterface_exists()untuk memeriksa apakahMessageableada. Lalu gunakanReflectionClassuntuk memeriksa interface-mu dan menampilkan daftar method-nya. Buat refleksi dari interface-mu, ambil method-nya menggunakangetMethods()(yang mengembalikan objectReflectionMethod), lalu cetakgetName()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
?>Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengenalan OOPclass vs objectKata Kunci $thismethodpropertyConstructor (__construct)Destructor (__destruct)Ringkasan: Kalkulator Sederhana4Pewarisan
Pewarisan DasarKata Kunci parent::Penimpaan methodKata Kunci finalClass AbstrakRingkasan: Hierarki Karyawan7Enkapsulasi
Public, Protected, PrivateModifier Akses secara MendalamGetter dan SetterPenyembunyian InformasiPromosi Constructor (8.0)Ulasan: Sistem Catatan Siswa2Namespace dan Autoloading
Pengenalan NamespaceKata Kunci useStandar Autoloading PSR-4Autoloader ComposerRingkasan: Proyek yang Terorganisasi5Interface dan Kontrak
Pengenalan InterfaceMengimplementasikan InterfaceImplementasi Beberapa InterfaceInterface vs Abstract ClassPetunjuk Tipe dengan InterfaceRekap: Kalkulator Bentuk8Magic Methods
Pengantar Magic Methods__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Cloning Object__serialize & __unserializeRingkasan: Koleksi Kustom11Sistem Tipe Data dan Penanganan Error
Deklarasi TipeTipe NullableTipe Union dan IntersectionClass ExceptionHierarki Exception KustomTry, Catch, FinallyRekap: Validator Form3Property dalam class
Property instance vs staticKonstanta dalam classMethod & property staticProperty private & protectedProperty readonly (PHP 8.1)Ulasan: Pengelola Rekening Bank6Polimorfisme
Meninjau Kembali Method OverridingPolimorfisme melalui AntarmukaPetunjuk Tipe dan Tipe UnionPengikatan Statis TertundaRangkuman: Pemroses PembayaranLatihan sendiri: Compiler PHP online