7.10 Methoden mit _ _call() überladen

Problem

Sie möchten beim Aufruf einer unbekannten Methode dynamisch bestimmen, was passieren soll. Vielleicht möchten Sie verschiedene Schreibweisen derselben Methode vereinheitlichen. Oder Sie möchten direkt auf die Methoden eines Objekts zugreifen, das in einer Eigenschaft Ihrer Objekt-Instanz gespeichert ist. Möglicherweise wollen Sie auch beim Aufruf einer Methode über Anzahl und Typ der Parameter bestimmen, wie der Methodenaufruf zu behandeln ist (Polymorphismus).

Lösung

Verwenden Sie _ _call():

class distanceConverter { private $conv = array("metres" => 1, "feet" => 3.048, "km" => 0.001, "miles" => 0.00054); function _ _call($method, $arguments) { // Einheit aus Methodennamen extrahieren: $unit = strtolower(preg_replace('/^to_(\w+)$/','\1',$method)); ...

Get PHP 5 Kochbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.