Hallo zusammen,
eine kurze Verständisfrage: Ich code PHP5 objektorientiert und möchte mich ein wenig am Zend Framework orientieren. Ich bin mir allerdings nicht sicher was ich von der Typisierung von Methoden Parametern halten soll.
Zum Beispiel:
Sicherlich eine feine Sache da man die Object-Übergabe erzwingt bzw. stark kontrolliert. Auch schön ist, dass die IDE in der Funktion dann die code-completion zum jeweiligen Objekt durchziehen kann, weil sie die Klasse kennt.
Ich bin allerdings bisher immer wie folgt vorgegangen:
und habe dann in der Funktion geprüft ob die Parameter die jeweiligen Klasseninstanzen sind und wenn nicht eine Exception geworfen. Ich habe so zumindest den Vorteil, dass ich kontrolliert aussteigen kann. In dem obigen Zend Beispiel wirft der PHP Interpreter einen "Fatal Error" den ich nicht sauber abfangen kann.
Meine Frage ist nun: Sollte ich hier besser Zend als Vorbild nehmen, auch wenn es unter Umständen zur Laufzeit öfters krachen kann?
eine kurze Verständisfrage: Ich code PHP5 objektorientiert und möchte mich ein wenig am Zend Framework orientieren. Ich bin mir allerdings nicht sicher was ich von der Typisierung von Methoden Parametern halten soll.
Zum Beispiel:
PHP:
public function assert(Zend_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null, $privilege = null);
Sicherlich eine feine Sache da man die Object-Übergabe erzwingt bzw. stark kontrolliert. Auch schön ist, dass die IDE in der Funktion dann die code-completion zum jeweiligen Objekt durchziehen kann, weil sie die Klasse kennt.
Ich bin allerdings bisher immer wie folgt vorgegangen:
PHP:
public function assert($acl, $role = null, $resource = null, $privilege = null);
und habe dann in der Funktion geprüft ob die Parameter die jeweiligen Klasseninstanzen sind und wenn nicht eine Exception geworfen. Ich habe so zumindest den Vorteil, dass ich kontrolliert aussteigen kann. In dem obigen Zend Beispiel wirft der PHP Interpreter einen "Fatal Error" den ich nicht sauber abfangen kann.
Meine Frage ist nun: Sollte ich hier besser Zend als Vorbild nehmen, auch wenn es unter Umständen zur Laufzeit öfters krachen kann?