PHP Classes

File: Sql_Object.class.php

Recommend this page to a friend!
  Classes of Tom Schaefer   SQL Parse and Compile   Sql_Object.class.php   Download  
File: Sql_Object.class.php
Role: Class source
Content type: text/plain
Description: sql object class (singleton)
Class: SQL Parse and Compile
Parse and compose SQL queries programatically
Author: By
Last change: update
Date: 15 years ago
Size: 3,923 bytes
 

Contents

Class file image Download
<?php
/**
 *
 * Sql_Object
 * @package Sql
 * @author Thomas Schäfer
 * @since 30.11.2008 07:49:30
 * @desc Singleton
 */

/**
 *
 * Sql_Object
 * @package Sql
 * @author Thomas Schäfer
 * @since 30.11.2008 07:49:30
 * @desc Singleton
 */

final class Sql_Object {

    private static
$properties = array();
    private static
$log = array();

    private function
__construct(){}
       
    public static function
set($name, $value){
       
self::$properties[$name] = $value;
    }
   
    private static function
setLog($type, $message, $file, $line) {
       
$logString = '<li>';
       
$logString .= '<div class="log-msg">'.$message."</div>";
       
$logString .= '<div class="log-pos">thrown at '.$file." (". $line.")</div>";
       
$logString .= '</li>';
       
self::$log[$type] = $logString;
    }
   
    public static function
setWarning($message=null, $file="", $line=""){
       
self::setLog("Warning", $message, $file, $line);
    }
   
    public static function
setError($message=null, $file="", $line=""){
       
self::setLog("Error", $message, $file, $line);
    }
   
    public static function
getLog(){
        return
'<div class="log"><ul>'.self::$log.'</ul></div>';
    }
   
    public static function
has($name){
        if(
strstr($name,".")){
           
$path = explode(".", $name);
           
$key = array_shift($path);
           
$path = implode(".",$path);
            return
self::hasElement($path,self::$properties[$key]);
        } else {
            return (isset(
self::$properties[$name])) ? true : false;
        }
    }

    public static function
count($name){
        if(
strstr($name,".")){
           
$path = explode(".", $name);
           
$key = array_shift($path);
           
$path = implode(".",$path);
            return
count(self::getElement($path,self::$properties[$key]));
        } else {
            return (isset(
self::$properties[$name])) ? count(self::$properties[$name]) : false;
        }
    }
   
    public static function
length($name){
        if(
strstr($name,".")){
           
$path = explode(".", $name);
           
$key = array_shift($path);
           
$path = implode(".",$path);
            return
strlen(self::getElement($path,self::$properties[$key]));
        } else {
            return (isset(
self::$properties[$name])) ? strlen(self::$properties[$name]) : false;
        }
    }
   
    public static function
get($name){
        if(
self::has($name)) {
            if(
strstr($name,".")){
               
$path = explode(".", $name);
               
$key = array_shift($path);
               
$path = implode(".",$path);
                return
self::getElement($path,self::$properties[$key]);
            }
            return
self::$properties[$name];
        }
        return
false;
    }
   
    public static function
token(){
        return
self::$properties["token"];
    }
   
    public static function
lexer(){
        return
self::$properties["lexer"];
    }

    protected static function
getElement($path, $data) {
        if(!
is_array($path)and strstr($path,".")){$path = explode(".", $path);}
        if(
is_array($path)) {
           
$key = array_shift($path);
           
$path = implode(".",$path);
            return
self::getElement($path, $data[$key]);
        } else {
            if(isset(
$data[$path])) {
                return
$data[$path];
            } else {
                return
$data;
            }
        }
    }
   
    protected static function
hasElement($path, $data) {
        if(!
is_array($path)and strstr($path,".")){$path = explode(".", $path);}
        if(
is_array($path)) {
           
$key = array_shift($path);
           
$path = implode(".",$path);
           
$dat = self::hasElement($path, $data[$key]);
            if(
is_array($dat)){
                return
$dat;
            } elseif(!empty(
$dat)) {
                return
true;
            } else {
                return
false;
            }
        } else {
            return (isset(
$data[$path]))?true:false;
        }
    }

    public static function
getAll(){
        return
self::$properties;
    }
   
    public static function
clear(){
       
self :: $properties["lexer"] = null;
       
self :: $properties["token"] = null;
    }
   
}