我想將從DataManager對象中的PDO收集的值傳遞給用戶對象。在使用PDO的php中的兩個對象之間的相互作用
- 用戶對象首先被調用,用請求檢索帶ID的用戶。
- 用戶創建到構造中的數據管理器的連接。
- datamanager構造調用PDO連接。
- 運行用戶選擇創建查詢以在數據庫上執行預製。
- 然後將查詢傳遞給處理查詢並返回結果的數據管理器。
- 應將此結果傳遞/設置爲用戶對象。
我不確定是否第5步或第6步是錯誤的。
class Datamanager {
public function __construct() {
try {
$this->dbh = new PDO("mysql:host=$this->hostName;dbname=$this->dbName", $this->dbUser, $this->dbPassword);
} catch(PDOException $e) {
echo $e->getMessage();
}
}
public function runQuery($query, $obj){
try {
$STH = $this->dbh->query($query);
$STH->setFetchMode(PDO::FETCH_INTO, $obj);
} catch(PDOException $e) {
echo $e->getMessage();
}
return($obj);
}
class User {
public $user_id;
public $user_name;
public $user_password;
public $session_id;
private $dbc;
public function __construct() {
$this->dbc = new Datamanager();
}
function selectUser ($userID, $obj) {
$query = 'SELECT user_id, user_name, user_password, session_id FROM users';
$results = $this->dbc->runQuery($query, $this);
}
$userID = "1";
$test = new User;
$test->selectUser($userID, $test);
我運行用戶的初始設置,然後嘗試加載數據管理器中檢索到的值。我明白PDO本身就是一個對象,但我仍然試圖創建一個普通的交互,因爲這個代碼將被擴展以允許更多的用戶對象訪問數據庫。