0Pricing
PHP Academy · Lektion

Überblick über Magic Methods

Lernen Sie __toString, __get, __set und weitere PHP-Magic-Methods kennen.

Überblick über Magic Methods ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Einführung: PHP Magic Methods

Magic Methods sind spezielle PHP-Methoden mit Präfixen aus zwei Unterstrichen, die in bestimmten Situationen automatisch von der PHP-Engine ausgelöst werden. Sie bieten Zugriffspunkte für das Verhalten von Objekten.

Grundkonzepte

Wichtige Konzepte der PHP Magic Methods:

  • __toString() — Konvertierung eines Objekts in eine Zeichenkette
  • __get/__set/__isset/__unset — Abfangen von Eigenschaftszugriffen
  • __call/__callStatic — Abfangen von Methodenaufrufen
  • __invoke() — aufrufbares Objekt

__toString

Beispiel:

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

Fortsetzung:

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

Übung:

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

Vertiefung:

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

Fortgeschrittene Verwendung:

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

Praxisnahes Muster:

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

Bewährte Vorgehensweisen:

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

Praxisnahes Muster

Hier wird alles anhand eines praxisnahen Musters für PHP Magic Methods zusammengeführt.

Häufige Fehler

Vermeiden Sie diese häufigen Fehler bei PHP Magic Methods:

  • Verwenden Sie __toString(), damit Objekte sinnvoll ausgegeben werden
  • __get/__set ermöglichen Proxy- und Decorator-Muster
  • __invoke macht Objekte aufrufbar (nützlich mit array_map)
  • __debugInfo verhindert, dass vertrauliche Daten in var_dump erscheinen

Schnelltest

Welche Magic Method macht ein PHP-Objekt wie eine Funktion aufrufbar?

Zusammenfassung: PHP Magic Methods

Sie haben PHP Magic Methods behandelt. Diese wichtigen Punkte sollten Sie sich merken:

  • Verwenden Sie __toString(), damit Objekte sinnvoll ausgegeben werden
  • __get/__set ermöglichen Proxy- und Decorator-Muster
  • __invoke macht Objekte aufrufbar (nützlich mit array_map)
  • __debugInfo verhindert, dass vertrauliche Daten in var_dump erscheinen

Häufig gestellte Fragen

Ist die Lektion „Überblick über Magic Methods“ kostenlos?

Ja — der vollständige Text von „Überblick über Magic Methods“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Überblick über Magic Methods“?

Lernen Sie __toString, __get, __set und weitere PHP-Magic-Methods kennen. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um PHP Academy zu starten?

Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Überblick über Magic Methods“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?

Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Klassen, Eigenschaften und Methoden
  2. Konstruktoren und Destruktoren
  3. Statische Eigenschaften und Methoden
  4. Überblick über Magic Methods
← Zurück zu PHP Academy