0Pricing
PHP Academy · Pelajaran

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 key

Pola 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

  1. Class, Properti, dan Method
  2. Constructor dan Destructor
  3. Properti dan Method Statis
  4. Gambaran Umum Method Ajaib
← Kembali ke PHP Academy