CC_Db_Queryget

Die Klasse CC_Db_Queryget implementiert das Singleton Pattern. Sie dient dazu SQL aus Dateien zu laden. Auf diese Weise können 2 Entwickler quasi gleichzeitig an gleichen Modulen arbeiten. Ich wollte SQL von Programmcode trennen. So bedingt eine Queryoptimierung nich immer auch eine Änderung  am PHP Code. Und es ist oft einfach die Querys in dafür gemachten Programmen zu erstellen. Auch macht es meiner Meinung nach den PHP Code leesbarer, wenn nicht immer wieder große SQL Blocks drin stehen.


DOWNLOAD


Verwendung:

Der erste Aufruf muss das SQL Verzeichnis an die Klasse übergeben:

$sql = CC_Db_Queryget::getInstance('/var/www/vhosts/test.local/SQL');

Dieser Aufruf passiert bei mir im Bootstrap.


In den Modellen reicht dann dieser Aufruf:

$sql = CC_Db_Queryget::getInstance();


An der Stelle, wo ihr ein Query laden wollt verwendet ihr einfach:

$sql->get('test');

Dieses liefert den Inhalt von /var/www/vhosts/test.local/SQL/test.sql


Ein Datenbankaufruf kann somit auch so geschrieben werden:

$db->fetchAll($sql->get('test'));


Wenn Variablen verwendet kann man sie natürlich auch normal in die Abfrage quoten:

$db->fetchAll($sql->get('test'), $db->quote($id, 'INTEGER');

Dazu werden wie sonst auch bei verwendung von Zend_Db an entsprechernder Stelle Fragezeichen im Query plaziert.


CC_Db_Queryget kann auch mit Verzeichnissen umgehen. Dies ist rudimentär aber praktisch:

$sql->get('beitraege_test');

hohlt nicht den Inhalt von /var/www/vhosts/test.local/SQL/beitraege_test.sql sondern von/var/www/vhosts/test.local/SQL/beitraege/test.sql. Somit kann man seine Querys geordnet ablegen. Diese Methode wirft eine Exception wenn die SQL Datei nicht leesbar ist oder wenn man (z.B. duch ..) ausserhalb des SQL Verzeichnis landen würde.