<?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;
}
}
|