dedlfix: Gibt es einen Bezeichnung für Art von Klasse?

Beitrag lesen

Tach!

der Konstruktor ist eine Klassenmethode.

Um das mal zu zeigen:

class Foo{
    private function __construct(){}
}

$f = new Foo;

Das wirft eine Fehlermeldung wie folgt:

PHP Fatal error:  Call to private Foo::__construct() from invalid context

Genso so ruft man Klassenmethoden auf, mit dem T_PAAMAYIM_NEKUDOTAYIM, also dem doppelten Doppelpunkt. PHP verrät infolge dieser Fehlermeldung daß der Konstruktor eine Klassenmethode ist und new nur ein Wrapper (Fascade).

Das ist eine falsche Schlussfolgerung. Die Schreibweise Foo::Bar wird dazu verwendet, um zu kennzeichnen, dass Bar ein Mitglied der Klasse Foo ist - oder auch nicht. Mit statisch hat das nichts zu tun. Es ist nur dieselbe Schreibweise wie bei statischen Aufrufen.

class Foo {}
$f = new Foo();

$f->qux; // Notice: Undefined property: Foo::$qux

$f->qux(); // Fatal error: Uncaught Error: 
           // Call to undefined method Foo::qux()

dedlfix.