Source: tobject.phps - download
<?php
/* 
 @ Project: TObject 1.0
 @ Link http://daif.net/tobject/
 @ Author Daifallh Al-Otaibi <daif55@gmail.com>
*/
    
class TObject{
        private 
$TOID;        // Table ID 
        
private $TOName;    // Table Name 
        
private $TOFields;    // Table Fields
        
private $TOrder;    // Order Fields
        
private $TOLimit;    // limit rows
        
private $TOsql;    // SQL String
        
private $TOVars = array('TOVars','TOID','TOName','TOFields','TOrder','TOLimit','TOsql');    // variables array

        
function TObject($TOName,$TOID=null){
            
$this->TOName $TOName;
            if(
$field_q mysql_query('DESC `'.$this->TOName.'`')){
                while(
$TOField mysql_fetch_assoc($field_q)){
                    
$TOField['Length'] = preg_replace('/.+\(([0-9]+)\)/','\\1',$TOField['Type']);
                    
$TOField['Type'] = preg_replace('/\([0-9]+\)/','',$TOField['Type']);
                    
$this->TOFields[$TOField['Field']] = $TOField;
                    
$this->$TOField['Field'] = null;
                    if(
$TOField['Key'] == 'PRI'$this->TOID $TOField['Field'];
                }
            } else {
                
$this->error("Table: '{$this->TOName}' dosen't exist");
            }
            if(
$TOID) return($this->create($TOID));
        }
        
//setter function
        
function __set($var$val){
            if(
in_array($var,$this->TOVars)){
                
$this->error("Variable: '$var' is readonly");
            }elseif(isset(
$this->TOFields[$var])){
                if(
get_magic_quotes_gpc()) $val stripslashes($val);
                
$this->$var mysql_escape_string($val);
            }else{
                
$this->error("Variable: '$var' is not exist");
            }
        }
        
//getter function
        
function __get($var){
            if(
in_array($var,$this->TOVars)){
                return(
stripslashes($this->$var));
            }elseif(isset(
$this->TOFields[$var])){
                return(
stripslashes($this->TOFields[$var]));
            } else {
                
$this->error("Variable: '$var' is not exist");
                return(
null);
            }
        }
        function 
primaryKey(){
            if(
$this->TOID){
                return(
$this->TOID);
            } else {
                
$this->error("Table: '{$this->TOName}' without PrimaryKey");
                return(
false);
            }
        }
        
//Create Object
        
function create($TOID){
            if(
$this->primaryKey()){
                if(
$TOID){
                    
$this->TOsql  'SELECT * FROM `'.$this->TOName.'`';
                    
$this->TOsql .=" WHERE `{$this->TOID}`='$TOID' LIMIT 1";
                    
$TObject mysql_fetch_assoc(mysql_query($this->TOsql));
                    if(
is_array($TObject)){
                        foreach(
$TObject as $TOFieldName=>$TOFieldValue){
                            
$this->$TOFieldName $TOFieldValue;
                        }
                        return(
$this);
                    }else{
                        return(
false);
                    }
                }
            }
            return(
false);
        }
        
//Fetch Object
        
function fetch(){
            
$this->limit(0,1);
            
$TObjects $this->find();
            
$TObject = (is_array($TObjects))?$TObjects[0]:false;
            return(
$TObject);
        }
        
//Order Object
        
function order($TOrder,$TOsort='DESC'){
            if(
is_array($TOrder) ){
                
$TOrder =  implode(', ',array_map('mysql_escape_string',$TOrder));
                
$this->TOrder ' ORDER BY '.$TOrder.$TOsort;
            } elseif(!empty(
$TOrder)) {
                
$this->TOrder ' ORDER BY '.mysql_escape_string($TOrder.' ').$TOsort;
            }
        }
        
//Limit rows
        
function limit($TOffset,$TOCount=null){
            if(!empty(
$TOffset) && !empty($TOCount)){
                
$this->TOLimit ' LIMIT 'mysql_escape_string($TOffset) . ', '.  mysql_escape_string($TOCount);
            } elseif (!empty(
$TOffset)){
                
$this->TOLimit ' LIMIT 'mysql_escape_string($TOffset);
            }
        }
        
//Find Object
        
function find($TOrder=''){
            
$this->TOsql 'SELECT * FROM `'.$this->TOName.'`';
            foreach(
$this->TOFields as $TOFieldName=>$TOFieldValue){
                if(
$this->$TOFieldName !== ''$TOWhere[] = "`$TOFieldName`='{$this->$TOFieldName}'";
            }
            if(isset(
$TOWhere)) $this->TOsql .= ' WHERE 'implode(' AND ',$TOWhere);
            if(
$this->TOrder)    $this->TOsql  .= $this->TOrder;
            if(
$this->TOLimit)    $this->TOsql  .= $this->TOLimit;
            
$TOQ mysql_query($this->TOsql);
            while(
$TObject mysql_fetch_assoc($TOQ)){
                
$TObjects[] = $TObject//$this->create($TObject[$this->TOID]);
            
}
            if(isset(
$TObjects) && is_array($TObjects)){
                return(
$TObjects);
            }else{
                return(
false);
            }
        }
        
//Save Object
        
function save(){
            return(
$this->insert());
        }
        
//Save Object
        
function insert(){
            if(
$this->{$this->TOID}){
                return(
$this->update());
            } else {
                foreach(
$this->TOFields as $TOFieldName=>$TOFieldValue){
                    
$TONames[] = "`$TOFieldName`";
                    
$TOValues[] = "'{$this->$TOFieldName}'";
                }
                
$this->TOsql  'INSERT INTO `'.$this->TOName.'` ('.implode(' ,',$TONames).')';
                
$this->TOsql .= ' VALUES ('.implode(' ,',$TOValues).')';
                if(
mysql_query($this->TOsql)){
                    return(
mysql_insert_id());
                }else{
                    print 
mysql_error();
                    return(
false);
                }
            }
        }
        
//Update Object
        
function update(){
            if(
$this->primaryKey()){
                foreach(
$this->TOFields as $TOFieldName=>$TOFieldValue){
                    
$TOValues[] = "`$TOFieldName`='{$this->$TOFieldName}'";
                }
                
$this->TOsql  'UPDATE `'.$this->TOName.'` SET '.implode(' ,',$TOValues);
                
$this->TOsql .= " WHERE {$this->TOID}='{$this->{$this->TOID}}' LIMIT 1";
                if(
mysql_query($this->TOsql)){
                    return(
$this->{$this->TOID});
                }else{
                    print 
mysql_error();
                    return(
false);
                }
            }
        }
        
//Trigger Error
        
function error($msg){
            
trigger_error($msgE_USER_WARNING);
        }
        
//Destroy Object
        
function destroy(){
            return(
settype($this'null'));
        }
        
//Delete Object
        
function delete(){
            if(
$this->primaryKey()){
                
$this->TOsql 'DELETE FROM `'.$this->TOName." WHERE {$this->TOID}='{$this->{$this->TOID}}' LIMIT 1";
                
mysql_query($this->TOsql);
                return(
$this->destroy());
            }
        }
}
// TObject wrapper function
function TObject($TOName,$TOID=null){
    return(new 
TObject($TOName,$TOID));
}
?>