Moin!
Tach!
Das ist ein sogenannter Type-Hint (bei beiden Parametern). Er bewirkt, dass PHP sich beschwert, wenn der übergebene Wert einen anderen Typ hat, als im Hint drinsteht.
Ausnahme ist null, das passt überall durch.
Nein, nicht in PHP.
Catchable fatal error: Argument 1 passed to Foo::__construct() must be an instance of Bar, null given
Da die Klasse Navi_Decorator in meinem Beispiel genau eine Methode namens "getHtmlLink()" implementiert, kann ich durch den Typehint garantieren, dass das übergebene Objekt eines ist, welches diese Methode hat. Ich muss beim späteren Verwenden dieses dann intern abgespeicherten Objektes nicht mehr prüfen, ob es diese Methode gibt, und es kann auch nicht passieren, dass irgendein unwissender anderer Programmierer mir ein Objekt rein reicht, bei dem dieser Aufruf scheitert, weil seine Klasse ganz andere Methoden kennt.
Lediglich auf null muss man noch per Hand prüfen, das sinnvollerweise gleich bei der Übergabe. Sonst kracht es später auch, weil null keine Mitglieder hat, auf die man zugreifen könnte.
Eben nicht.
"null" geht nur, wenn man es als Default-Wert in der Deklaration angegeben hat, um den Parameter optional zu machen.
- Sven Rautenberg