s, Thema,
das hier:
// Die order wird in die DB geschrieben
$db = new dBase_order( array(
'base' => $this->eav('base'),
'host' => $this->eav('host'),
'port' => $this->eav('port'),
'user' => $this->eav('user'),
'pass' => $this->eav('pass'),
));$orderid = $db->insert($hunt);
ist schlechtes Programmdesign, die Credentials liegen direkt in der Instanz der Model Class, raus damit! Zur Verbesserung sind Magic Functions hilfreich und eine dedizierte Klasse:
~~~php
$dbcfg = $this->dBaseUtil->credentials($dbname);
$db = new dBase_order($dbcfg);
PHP Voodo (Magic Delegation):
Es wird ein Attribut 'dBaseUtil' angebaggert, was es nicht gibt. Die Magic Funktion __get()
schlägt zu und erstellt dieses Attribut als Instanz der Klasse 'dBaseUtil'. Dafür schlägt wiederum eine Magic-Method zu: autoload, in dieser über autoload_register eigens eingestellten Methode wird mit new die begehrte Instanz erstellt und zurückgegeben. Zum Schluss wird die Methode credentials($dbname);
aufgerufen, welche dann schließlich die Credentials (user,pass,port,base,host) zurückliefert, womit eine Zeile weiter dann das DB-Objekt erstellt werden kann.
Die Credentials selbst liegen so an einem sicheren Ort.
Hotti