PHP Classes

File: test.php

Recommend this page to a friend!
  Classes of spajus   Db Object   test.php   Download  
File: test.php
Role: Example script
Content type: text/plain
Description: Example and Crash Course
Class: Db Object
Object oriented database abstraction layer
Author: By
Last change:
Date: 19 years ago
Size: 3,568 bytes


Class file image Download
    * @example

    // assume we have a database named test at localhost, with user foo:bar
    // structure:
    // ------------
    // CREATE TABLE `test`.`bar` (
    // `id` int( 11 ) NOT NULL AUTO_INCREMENT ,
    // `name` varchar( 255 ) NOT NULL default '',
    // `added` datetime NOT NULL default '0000-00-00 00:00:00',
    // `desc` text NOT NULL ,
    // PRIMARY KEY ( `id` )
    // );
    // ------------
    //define connection data
$data = array
"host" => "localhost",
"user" => "foo",
"pass" => "bar",
"db" => "test",
//avoid annoing inclusion statements
function __autoload($name)
//start the db engine
//we may want to extend the default DbObject class
class DbFoo extends DbObject
//required to define... it's the table we will use
protected $table = "bar";
//add new foo
public function add($name)
$foo = new DbFoo;
$foo->name = $name;
$foo->added = 'NOW()';
//initialize foo
$test = new DbFoo();
//define new foo
$test->name = "preston";
$test->desc = "the pig";
$test->added = "NOW()";
//save to database
//add new 1337 foo using custom DbFoo::add() function
//let's try searching what we have just added..
$c = new DbCriteria();
$c->add("name", "prest%", "like");
$c->add("added", "NOW()", "<", "and");
$c->add("desc", null, "!=", "and");
//get foo by criteria
$test->name; //should output "preston"
echo $test->desc; //should output "the pig"
    //now lets try advanced criterias

    //id should be 2, 3 or 5
$c2 = new DbCriteria();
$c2->addIn("id", array(2, 3, 5));
//name should be preston and desc shoud be like pig
$c3 = new DbCriteria();
$c3->add("name", "preston");
$c3->add("desc", "%pig%", "like", "and");
//now let's combine these two criterias with OR
$c = new DbCriteria();
$c->combine($c2, $c3, "or");
//..and define order by name desc and limit 0, 3
$c->addOrder("name", "desc");
$c->addLimit(0, 3);
//now let's get the objects which meet these criterias
$results = $test->getMultiple($c);
//and print them out
foreach ($results as $result)
$result->id . " " . $result->name . "<br>";

//we can use DbObject without extending it too.. But you shouldn't though..
$foo = new DbObject("bar");
$foo->name = "jedi";
$foo->added = "CURDATE()";
//we will overwrite some other object with info above.. and we'll do this by criteria where name = preston
$c = new DbCriteria();
$c->add("name", "preston");

//see if the save worked..
$bar = new DbFoo();
$c = new DbCriteria();
$c->add("name", "jedi");
$jedi = $bar->get($c, array("name", "desc"));
$jedi->desc . " is named " . $jedi->name; //should output "the pig is named jedi"
    //this whole thingie is only v0.1.. still, it should be enough to complete something simple.. though i hope to improve it in future. any ideas? mail me: