我已經閱讀了其他帖子並探索了 $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());
}
}
}
?>
您可能會像這樣調用它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() {...}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句