Gambaran Umum Method Ajaib
Pelajari __toString, __get, __set, dan method ajaib PHP lainnya.
Gambaran Umum Method Ajaib adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.
Pendahuluan: Metode Magis PHP
Metode magis adalah metode PHP khusus dengan awalan garis bawah ganda yang dipicu secara otomatis oleh mesin PHP dalam situasi tertentu. Metode ini memberi Anda pengait untuk mengatur perilaku objek.
Konsep Inti
Konsep-konsep utama metode magis PHP:
__toString()— konversi objek menjadi string__get/__set/__isset/__unset— pencegatan akses properti__call/__callStatic— pencegatan pemanggilan metode__invoke()— objek yang dapat dipanggil
__toString
Contoh:
<?php
class Money {
public function __construct(
private float $amount,
private string $currency
) {}
public function __toString(): string {
return number_format($this->amount, 2) . ' ' . $this->currency;
}
}
$price = new Money(9.99, 'USD');
echo $price; // 9.99 USD
echo 'Price: ' . $price; // Price: 9.99 USD__get dan __set
Kelanjutan:
<?php
class DynamicObject {
private array $data = [];
public function __get(string $name): mixed {
return $this->data[$name] ?? null;
}
public function __set(string $name, mixed $value): void {
$this->data[$name] = $value;
}
}
$obj = new DynamicObject();
$obj->name = 'Alice';
echo $obj->name; // Alice__isset dan __unset
Latihan:
<?php
class Model {
private array $attributes = [];
public function __set(string $k, mixed $v): void { $this->attributes[$k] = $v; }
public function __get(string $k): mixed { return $this->attributes[$k] ?? null; }
public function __isset(string $k): bool { return isset($this->attributes[$k]); }
public function __unset(string $k): void { unset($this->attributes[$k]); }
}
$m = new Model();
$m->email = 'a@b.com';
var_dump(isset($m->email)); // true
unset($m->email);
var_dump(isset($m->email)); // false__call dan __callStatic
Pendalaman:
<?php
class FluentQuery {
private array $clauses = [];
public function __call(string $name, array $args): static {
$this->clauses[$name] = $args[0] ?? null;
return $this;
}
public function toSql(): string {
return 'SELECT * FROM '
. ($this->clauses['from'] ?? 'unknown');
}
}
echo (new FluentQuery())->from('users')->toSql();
// SELECT * FROM users__invoke
Penggunaan lanjutan:
<?php
class Multiplier {
public function __construct(private float $factor) {}
public function __invoke(float $value): float {
return $value * $this->factor;
}
}
$double = new Multiplier(2);
echo $double(5); // 10
echo $double(21); // 42
$funcs = [new Multiplier(2), new Multiplier(3)];
foreach ($funcs as $fn) echo $fn(4) . ' '; // 8 12__clone
Pola dunia nyata:
<?php
class Config {
private array $data = [];
public function set(string $k, mixed $v): self {
$this->data[$k] = $v;
return $this;
}
public function __clone() {
// deep clone nested objects if needed
}
}
$original = (new Config())->set('theme', 'dark');
$copy = clone $original; // triggers __clone__debugInfo
Praktik terbaik:
<?php
class ApiClient {
public function __construct(
private string $baseUrl,
private string $apiKey // sensitive!
) {}
public function __debugInfo(): array {
return [
'baseUrl' => $this->baseUrl,
'apiKey' => '***' . substr($this->apiKey, -4), // mask key
];
}
}
var_dump(new ApiClient('https://api.example.com', 'secret123'));
// Shows masked keyPola Praktis
Menyatukan semuanya melalui pola praktis untuk metode magis PHP.
Kesalahan Umum
Hindari kesalahan umum berikut saat menggunakan metode magis PHP:
- Gunakan __toString() agar objek ditampilkan secara bermakna
- __get/__set memungkinkan pola proksi/dekorator
- __invoke membuat objek dapat digunakan sebagai objek yang dapat dipanggil (berguna untuk pemetaan array)
- __debugInfo mencegah data sensitif muncul dalam var_dump
Pemeriksaan Singkat
Metode magis apa yang membuat objek PHP dapat dipanggil seperti fungsi?
Ringkasan: Metode Magis PHP
Anda telah mempelajari metode magis PHP. Poin-poin penting yang perlu diingat:
- Gunakan __toString() agar objek ditampilkan secara bermakna
- __get/__set memungkinkan pola proksi/dekorator
- __invoke membuat objek dapat digunakan sebagai objek yang dapat dipanggil (berguna untuk pemetaan array)
- __debugInfo mencegah data sensitif muncul dalam var_dump
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Gambaran Umum Method Ajaib” gratis?
Ya — teks lengkap “Gambaran Umum Method Ajaib” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Gambaran Umum Method Ajaib”?
Pelajari __toString, __get, __set, dan method ajaib PHP lainnya. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai PHP Academy?
Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Gambaran Umum Method Ajaib” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?
Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Class, Properti, dan Method
- Constructor dan Destructor
- Properti dan Method Statis
- Gambaran Umum Method Ajaib