Ü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 keyPraxisnahes 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
- Klassen, Eigenschaften und Methoden
- Konstruktoren und Destruktoren
- Statische Eigenschaften und Methoden
- Überblick über Magic Methods