Login   Register  
PHP Classes
elePHPant
Icontem

File: test.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  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: 2005-01-19 10:29
Size: 3,568 bytes
 

Contents

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)
    {
        require_once(
"class.$name.php");
    }
    
    
//start the db engine
    
DbHandler::connect($data);
    
    
//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()';            
            
$foo->save();
            unset(
$foo);
        }            
    }
           
    
//initialize foo
    
$test = new DbFoo();
    
    
//define new foo
    
$test->name "preston";
    
$test->desc "the pig";
    
$test->added "NOW()";
    
    
//save to database
    
$test->save();
    
    
//add new 1337 foo using custom DbFoo::add() function
    
$test->add("1337");    
    
    
//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->get($c);
    echo 
$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(235));
    
    
//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(03);
    
    
//now let's get the objects which meet these criterias
    
$results $test->getMultiple($c);
    
    
//and print them out
    
foreach ($results as $result)
        echo 
$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");
    
$foo->save($c);

    
//see if the save worked..
    
$bar = new DbFoo();
    
$c = new DbCriteria();
    
$c->add("name""jedi");
    
$jedi $bar->get($c, array("name""desc"));
    echo 
$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: tomas@netatbiz.com 
    //enjoy!
    
?>