将对象分配给静态变量

时间:2013-06-18 18:55:55

标签: php oop singleton

我做错了什么

class db
{

     static $dbintance=null;    


     public function __construct()
     {


       try
       {
       self::$dbintance=new PDO("mysql:host=host;dbname=dbname",user,password);
       }
       catch( PDOException $e)
       {
       die( '<b>Errors:</b> '.$e->getMessage());
       }

       }


     public static function isRecord($q)
       {

    $r=self::$dbintance->query($q)->fetch(PDO::FETCH_NUM);
    if($r[0]) return true; 
    if(!$r[0]) return false;
   }  

}

用法

 echo (db::isRecord("SELECT * FROM whcentral1 WHERE ItemDesc='ff'"))?'Yes':'NO';

错误

在非对象

上调用成员函数query()

1 个答案:

答案 0 :(得分:1)

PHP不做静态构造函数。你写这个的方式,你实际上必须运行new db()才能运行。您可能最好使用静态访问器方法,例如:

class db {

 static $dbintance=null;    


 public static function getConnection(){
   if (!self::$dbinstance) {
     try {
         self::$dbintance=new PDO("mysql:host=host;dbname=dbname",user,password);
     } catch( PDOException $e) {
         die( '<b>Errors:</b> '.$e->getMessage());
     }

  }
  return self::$dbinstance;
// etc.
}