dedlfix: Tipps für die Verwendung von Array oder Objekt

Beitrag lesen

Tach!

Vererbung ist nicht im Spiel, wenn man keine verwendet. Da wird auch nichts implizit von irgendeiner (internen) Superklasse geerbt, wie das beispielsweise bei C# mit der Klasse Object der Fall wäre.

Es wäre aber eine plausible Implementierung der Magic Methods. Hast Du eine Quelle, aus der hervorgeht, dass es sich dabei nicht um virtuelle Methoden einer internen Object Superklasse handelt?

Nein, ich nehme an, dass sie anhand des Namens gefunden werden. Müsste man im Code nachschauen, wenn es wirklich interessiert. Ich sehe keinen Sinn darin, das über Vererbung und einer internen Superklasse zu lösen. Das werden ganz normale Methodenaufrufe sein, nur dass sie einen festgelegten Namen haben. Methoden mit anderen Namen müssen auch direkt aufgerufen werden können, ohne dass eine Superklasse sie vordefiniert.

Es ist jedenfalls so, dass man eine __get Methode nicht explizit aufrufen kann. Weder von außerhalb noch aus einer Methode heraus.

Doch, das geht problemlos. Das sind an sich stinknormale Funktionen, selbst __construct().

<?php

class foobar {
    function __construct($param) {
        echo $param;
    }
    
    function __get($name) {
        return $name;
    }
    
    function foo() {
        return $this->__get('bar');
    }
}

$x = new foobar('foo');
$x->__construct('bar');

echo $x->__get('foo');
echo $x->foo();

dedlfix.