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 undnew
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.