我已經閱讀了其他帖子并探索了 $this-> & self:: 的使用,但都不適用于我的班級。我已經檢查了推薦的帖子,但它們沒有解決我面臨的確切問題,所以我之前的問題被關閉了.....是因為我在同一個查詢中混合了靜態變數而不是靜態變數嗎?
我不是偷懶,我只是真的不明白問題是什么,以便進一步研究。是可變范圍問題還是私有與公共問題。我還沒有看到這個問題的解決方案。
這是我的課:
<?php
class DBConnection {
private $dbHost = DB_HOST;
private $dbUser = DB_USER;
private $dbPass = DB_PASS;
private $dbName = DB_NAME;
public static function make() {
$dsn = 'mysql:host=' . $this->dbHost . ';dbname=' . $this->dbName;
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
try {
return new PDO($dsn, $this->dbUser, $this->dbPass, $options);
} catch(PDOException $e) {
die($e->getMessage());
}
}
}
?>
uj5u.com熱心網友回復:
您在靜態方法中使用 $this 。要么將您的類屬性宣告為靜態,要么從您的 make() 函式宣告中洗掉靜態。
uj5u.com熱心網友回復:
您可能會像這樣呼叫它DBConnection::make()它是一個靜態函式,因此您需要創建靜態變數來訪問它們,如下所示:
class DBConnection {
private static $dbHost = DB_HOST;
private static $dbUser = DB_USER;
private static $dbPass = DB_PASS;
private static $dbName = DB_NAME;
public static function make() {
$dsn = 'mysql:host=' . self::$dbHost . ';dbname=' . self::$dbName;
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
try {
return new PDO($dsn, self::$dbUser, self::$dbPass, $options);
} catch(PDOException $e) {
die($e->getMessage());
}
}
}
或者像這樣呼叫它,以便創建一個類實體:
$db = new DBConnection();
$make = $db->make();
//Remove the static and now you can use "$this->dbHost" etc..
public function make() {...}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/334332.html
上一篇:通過子查詢/連接過濾SQL中的行
