問候好人,如果對象沒有實例,調用靜態函數返回NULL? PHP OOP
我最近遇到一些與OOP有關的問題。首先,我正在尋找從頭創建CRUD Db類。這是一個代碼:
class Database{
public static $link;
public $message;
public function __construct() {
try {
self::$link = mysqli_connect(HOST, USER, PASS, DB);
if (!self::$link) {
echo self::$link->error;
}
} catch (Exception $e) {
die(" Failed connecting to DB") ;
}
}
public static function query($SQL){
return self::$link->query($SQL);
}
public static function select($table, array $columns){
$columns=implode(",",$columns);
$result=self::query("SELECT $columns FROM $table");
return self::$link->fetch($result);
}
}
所以,問題是這樣的:
如果我把我的靜態選擇功能是這樣的:
Database::select('users', array('username'=>'user'));
它返回:致命錯誤:調用一個成員函數查詢()在一個非對象.. 如果我調試這樣的連接:var_dump(Database::$link)
返回NULL 但如果我把「$ DB =新的數據庫();」在該線以上,它的工作原理?
誰能教我什麼,我做錯了什麼?
謝謝!
我沒有注意到:(HOST,USER,PASS,DB)是從另一個文件包含常數。 – fugitive