我有一个小班,我唯一想要包装的就是建立联系:
<?php
/**
* DB class
*/
class DB {
private static $_instance = NULL;
private $_mysqli;
private function __construct() {
try {
$this->_mysqli = new Mysqli('localhost', 'root', '', 'tradePlace');
} catch(Exception $e) {
throw new Exception(
"Details: " . $e->getMessage()
);
}
}
public static function getInstance() {
if(!isset(self::$_instance)) {
self::$_instance = new DB();
}
return self::$_instance;
}
}
但如果我这样做:
$result = DB::getInstance()->query("SELECT
password, salt, COUNT(id) AS founds
FROM users
WHERE username = '' LIMIT 1");
我收到此错误:
致命错误:在非对象上调用成员函数query() 在 C
\ xampp \ htdocs \ classes \ User.php 10
为什么呢?它应该是一个对象。当我将return self::$_instance
更改为return self::$_mysqli
时,我收到此错误:
致命错误:访问未声明的静态属性: 在线上 C:\ xampp \ htdocs \ classes \ DB.php 中的DB :: $ _ mysqli 20
我是OOP编程的初学者,但我不明白为什么这不起作用。
答案 0 :(得分:-3)
如果要访问mysqli :: query,请重新声明_mysqli
public $_mysqli;
然后使用此代码
$result = DB::getInstance()->_mysqli->query("SELECT ...