PHP的PDO功能和DAO pattern怎麼混合?我應該有一個抽象類來初始化與數據庫的連接嗎?可以將PDO視爲等同於Java的JDBC?結合PDO和DAO模式
3
A
回答
2
PHP的PDO功能和DAO模式如何混合?
只需使用pdo來查詢您的dao對象。
class PersonDAO {
function get($id) {
//> EXECUTE HERE PDO
}
}
此外,PDO已經抽象了連接,所以您不需要抽象類進行連接。
6
是的,PDO幾乎是JDBC的「等價物」,但在PHP中。
你應該通過PDO的一個實例,在你的域對象(依賴注入)的構造函數:
abstract class Object {
protected $_pdo;
protected $_target;
public function __construct(PDO $pdo) {
$this->_pdo = $pdo;
}
public function load($id) {
// $this->_pdo->something()
}
public function save() {
// $this->_pdo->something()
}
public function delete() {
// $this->_pdo->something()
}
}
class User extends Object {
protected $_target = 'user_table';
public $name;
}
然後:
$pdo = new PDO('mysql:dbname=foobar');
$user = new User($pdo);
$user->name = 'netcoder';
$user->save();
你也可以在Object
添加靜態方法來指定一個默認的實例:
class Object {
// ...
static protected $_defaultPDO;
static public function setDefaultPDO(PDO $pdo) {
self::$_defaultPDO = $pdo;
}
public function __construct(PDO $pdo = null) {
if (!isset($pdo)) $pdo = self::$_defaultPDO;
if (!isset($pdo))
throw new DomainException('No default PDO object defined');
$this->_pdo = $pdo;
}
}
Object::setDefaultPDO(new PDO('mysql:dbname=foobar'));
$user = new User;
$user->name = 'James P.';
$user->save();
相關問題
- 1. dao模式和關係
- 2. ORM和DAO設計模式
- 3. API設計和DAO模式
- 4. PDO和多模式
- 5. DAO模式 - 交易在哪裏適合?
- 6. DAO模式和模型對象
- 7. 正確方法:DAO設計模式的PHP + PDO
- 8. DAO設計模式
- 9. 使用DAO模式
- 10. DAO模式多表
- 11. 結合haversine公式與PHP PDO
- 12. DAO設計模式和連接處理
- 13. Dao模式和業務對象關係
- 14. DAO和DP模式有什麼區別?
- 15. DAO和服務層的設計模式
- 16. 和DAO得墨忒耳定律模式
- 17. Android - 使用Dao模式和contentProvider
- 18. 瞭解DAO模式和接口
- 19. 服務和DAO設計模式
- 20. Objective-C中的DAO模式?
- 21. 核心數據DAO模式
- 22. DAO模式多線程
- 23. DAO設計模式界面
- 24. Groovy和GWT:結合兩種模式
- 25. PDO結果和枝條模板庫
- 26. PDO結合不給值
- 27. 休眠模型類和DAO
- 28. PDO布爾模式
- 29. MySQL的PDO結合空結果
- 30. 通用DAO模式Spring JDBC模板
你會怎麼做可以讓你說你需要加入一個用戶到額外的表來獲得更多的信息,你會創建一個代理類,如用戶,有方法來運行更復雜的查詢,或者我猜如果你想要拉回所有用戶,而不是一個更簡單的? – nagates 2012-05-05 16:51:11
@NateGates通過應用DAO模式,您可以爲User創建相應的類,並擁有諸如getAllUsers,getUsersByLoginDate或getUsersByIP等方法。 – 2012-09-29 04:40:34