[PHP5] ActiveRecord Klasse

Moin moin,

für alle die sich mit einfachen Activerecord Pattern außereinander setzen möchten, habe ich eine kleine PHP5 Klasse dazu geschrieben.
Diese setzt auf “Prepared Date Objects” auf, also daran denken wenn ihr einen Webserver betreibt zu überprüfen ob die extension pdo.so (unter windows: php_pdo_mysql.dll) geladen wird.

Die Datenbankverbindung mit der Klasse wird wie folgt hergestellt:

           require_once(BASEDIR."/includes/config.inc.php");
           require_once(BASEDIR."/includes/class/database.class.php");

           try{
                $database = new database($sqldbhost.":".$sqldbport, $sqldbuser, $sqldbpass, $sqldbname, $sql_prefix);
            }catch(Exception $err){
                die($err);
            }

Ein Prefix kann an dieser Stelle mitgegeben werden, ist aber auch nicht zwingend erforderlich. Ebenso muss nicht unbedingt der MySQL-Port angegeben werden,
sondern stattdessen kann auch nur der Hostname angegeben werden, dann wird der Standard-MySQL-Port 3306 gewählt.

Ein Beispielstatement könnte wie folgt aussehen:

            $database->select("templatename,tplfile");
            $database->from("group g");
            $database->NaturalJoin("permission");
            $database->NaturalJoin("template");
            $database->Where("allow = 1");
            $database->AndWhere("tid = :tid");
            $database->AndWhere("g.gid = 1");
            $database->OrderBy("pos");
            $database->prepare();
            $database->bindParam(":tid", $p);

        if($database->execute()){
            $data = $database->fetch("FETCH_ASSOC");
            print_r($data);
        }

Wichtig ist hierbei zu beachten, das die Methode prepare noch vor dem bindParam ausgeführt wird.
bindParam sorgt dafür das Platzhalter im Statement einen Wert zugewiesen bekommen (Stichwort auch hier wieder: Prepared Statements).
Werte innerhalb von Where Statements oder anderen Statements werden nur als Platzhalter hinterlegt (“:etwas”).

Methoden die von dieser Klasse unterstützt werden, lassen sich in der mitgelieferten Dokumentation nachlesen.

Wichtige Notiz: Zur Verwendung der Klasse wird die aktuellste Version vom IonCube-Loader benötigt.

http://blog.php-developement.info/downloads/active_records.7z

Leave a Reply