CakePHP – Ein Model in einem anderen nutzen
Das Handbuch schweigt sich darüber aus, vielleicht weil man es als Verstoß gegen das MVC Paradigma ansehen könnte? Ich weiß es nicht. Die Lösung ist wie immer recht einfach. Ein Classloader……sehr praktisch und wie es scheint an allen Stellen einsetzbar:
http://api.cakephp.org/class/class-registry
Und so sieht es dann ein einem Model aus:
class Model extends AppModel { public function doIt($data){ $this->OtherModel = ClassRegistry::init("OtherModel"); $other = $this->OtherModel->findById($data['id']); } }
Die Verantwortung für das Laden eines Models in ein anderes liegt damit beim Programmier. Das große Vorbild Ruby On Rails stellt dem Entwickler alle Modelle an allen Stellen direkt zur Verfügung, PHP ist nicht Ruby. Ich werde deswegen lieber eine Modelbezogene Methode entwickeln.
Selbstredend lässt so auch jedes Model in einen View Helper laden! Wollte das nur mal erwähnen wegen den Suma’s
In diesem Zusammenhang:
- CakePHP – Arbeiten mit zwei Datenbanken Im Prinzip ist es sehr einfach mit zwei Datenbanken zu...
- Verwirrende Signatur von Tree generatetreelist() Das Behaviour Tree von CakePHP ist schon recht nützlich, aber...
- CakePHP – Installation in einem Verzeichnis Üblicherweise werden CakePHP Applikation ja im Document Root eines Webserver...