hotti: Selbstkritik

Beitrag lesen

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