Menu
CoddyTech

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:

MethodTerpicu 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 Mastery

Tanpa __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.

challenge icon

Tantangan

Mudah

Mari 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 class Movie yang 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 instance Movie menggunakan 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)

?>
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