Tutorial: HookUp

Lösungsansätze

In diesen Punkt muss ich leider enttäuschen. Es gibt nicht den einen Lösungsansatz. Und alle die bestehen, haben ihre Vor- und Nachteile. Grundsätzliches wurde bereits besprochen:

  • Anonyme Objekte, also Instanzen einer Klasse die keiner Variablen zugewiesen wurden, sind strengstens zu vermeiden. Das gleiche gilt für Closures (anonyme Funktionen).
  • Die Objekte sollten global verfügbar sein, da es wenig Sinn macht ein Objekt zu erzeugen auf das von nirgendwo anders zugegriffen werden kann als in der Funktion/Methode in der es erzeugt wurde.
  • Statische Methodenaufrufe können nur dann verwendet werden, wenn sie nur ein einziges mal als Callback verwendet werden, von der Klasse also nicht verschiedene Objekte erzeugt werden sollen. Dies trifft relativ häufig zu, so dass dies derzeit eine der besseren Lösungen ist. Programmiert man jedoch sehr streng bzw. sehr nah an OOP, wird dies früher oder später zum Problem werden da die Objekte ja gerade der Kern von OOP ist.
  • Das Entfernen von Callback-Methoden aus Objekten ist nicht unmöglich, jedoch mit etwas Aufwand verbunden. Wenn möglich, sollte man dies unterlassen (kein array( $this, 'callback_method').

Da PHP Objekte als Refernz speichert, ist es wahrscheinlich der beste Ansatz ein Objekt zu erzeugen (z.B. mit $my_global_objects = new stdClass();), seine eigenen Objekte dort zu lagern und dieses Objekt global verfügbar zu machen. Da es für die bestehenden Probleme (noch) keine universelle Lösung gibt, wird es wohl in Zukunft noch das eine oder andere mal Thema in diesen Blog werden.