Pengantar Magic Methods
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 44 dari 91.
Magic methods adalah method khusus dalam PHP yang diawali dengan garis bawah ganda (__) dan dipanggil secara otomatis oleh PHP sebagai respons terhadap peristiwa atau tindakan tertentu. Kamu sudah menggunakan dua di antaranya: __construct() dan __destruct().
Method ini memungkinkan kamu terhubung ke perilaku internal PHP dan menyesuaikan cara object merespons operasi umum.
Sebagai contoh, apa yang terjadi saat kamu mencoba mencetak object? Atau mengakses property yang tidak ada? Magic method memberimu kendali atas situasi ini.
Berikut ringkasan singkat tentang magic method yang paling sering digunakan:
| Method | Terpicu Saat |
|---|---|
__construct() | Object dibuat |
__destruct() | Object dihancurkan |
__toString() | Object digunakan sebagai string |
__get() | Mengakses property yang tidak terdefinisi |
__set() | Mengatur property yang tidak terdefinisi |
__call() | Memanggil method yang tidak terdefinisi |
__clone() | Object dikloning |
<?php
class Book {
public function __construct(
private string $title
) {}
public function __toString(): string {
return "Book: " . $this->title;
}
}
$book = new Book("PHP Mastery");
echo $book;
Output:
Book: PHP MasteryTanpa __toString(), mencoba menampilkan object dengan echo akan menyebabkan error. Magic method menangani tindakan ini dan mengembalikan representasi string. Dalam pelajaran berikutnya, kita akan membahas setiap magic method secara mendetail.
Tantangan
MudahMari kita buat sistem katalog film yang memperkenalkanmu pada magic method. Kamu akan membuat class Movie yang menggunakan __construct() untuk menginisialisasi data film dan __toString() untuk memberikan representasi string yang rapi saat object dicetak.
Kamu akan mengatur kodemu dalam dua file:
Movie.php: Buat classMovieyang merepresentasikan film dalam katalogmu. Gunakan promosi konstruktor untuk mendefinisikan property privat untuk$title(string),$director(string), dan$year(integer). Terapkan magic method__toString()untuk mengembalikan string berformat:"[title] ([year]) - Directed by [director]". Dengan begitu, object film dapat langsung di-echo tanpa memanggil method terpisah.main.php: Sertakan file Movie. Kamu akan menerima tiga input: judul film, nama sutradara, dan tahun rilis. Buat instanceMoviemenggunakan nilai-nilai ini (ubah tahun menjadi integer). Lalu, cukup echo object film secara langsung: method__toString()akan otomatis dipanggil untuk menghasilkan output.
Keistimewaan __toString() adalah PHP otomatis memanggilnya setiap kali object-mu digunakan dalam konteks string. Daripada menulis echo $movie->getInfo();, kamu cukup menulis echo $movie; dan PHP akan menangani konversinya untukmu. Ini membuat object lebih intuitif untuk digunakan.
Coba sendiri
<?php
require_once 'Movie.php';
// Baca input
$title = trim(fgets(STDIN));
$director = trim(fgets(STDIN));
$year = intval(fgets(STDIN));
// TODO: Buat instance Movie menggunakan nilai input
// TODO: Tampilkan object film secara langsung (method __toString() akan dipanggil secara otomatis)
?>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