<?php
#########################################
## @Author: Ahmed Aboelsaoud           ##
## E-mail:thefox70002000@yahoo.com     ##
## No Copyright To Be Reserved :) ^_^  ##
#########################################

class mySQL {
   
// مصفوفة لتخزين قيم الإتصال بقاعدة البيانات بها
private $DB = array();
// متغير لحفظ الكائن المشأ من هذه الفئة
private static $classObj = NULL;
// متغير لحفظ الكائن المنشأ من فئة الإتصال بقاعدة البيانات
private static $objCon = NULL;

private static $objMC = NULL;

    protected function __construct(){
        // ضبط قيم الإتصال بقاعدة البيانات عند إستدعاء الفئة
        // اسم السرفر لقاعدة البيانات
        $this->DB['Host'] = "localhost";
        // اسم المستخدم لقاعدة البيانات
        $this->DB['UserName'] = "root";
        // الرقم السرى لمستخدم قاعدة البيانات
        $this->DB['UserPass'] = "123";
        // اسم قاعدة البيانات
        $this->DB['Name'] = "db";
    }
   
    // جعل الدالة نهائية حتى لا يتم إستنساخ كائن جديد من الفئة
    final private function __clone() {}
   
    // دالة إنشاء كائن من نفس الفئة الحالية
    public static function getObj(){
        if(!self::$classObj)
            self::$classObj = new self();
        return self::$classObj;
    }
   
    // دالة إنشاء كائن من فئة الإتصال بقاعدة البيانات
    public function getConObj(){
		if(self::$objCon) 
			return self::$objCon;
		$obj = $this->getMCObj();
		if(!$obj->get('objCon')){
			self::$objCon = new mysqli($this->DB['Host'],$this->DB['UserName'],$this->DB['UserPass'],$this->DB['Name']);
			if(self::$objCon->connect_errno)
                die(self::$objCon->connect_error);
			$obj->set('objCon',self::$objCon,300);
			return self::$objCon;
		}else{
			self::$objCon = $obj->get('objCon');
			return self::$objCon;
		}
    }
   
    // دالة إنشاء إستعلام على قاعدة البيانات
    public function makeQuery($qu){
        $temp = $this->getConObj()->query($qu);
        if(!$temp)
            die($this->getConObj()->error);
        return $temp;
    }
    
    public function getMCObj(){
		if(!self::$objMC){
            self::$objMC = new Memcached();
            self::$objMC->addServer('localhost', 11211);
		}
        return self::$objMC;
	}
   
} // end mySQL class

?>
