Câu trả lời cho cái nào tốt hơn là "nó phụ thuộc." Như với bất cứ điều gì, có nhiều cách tiếp cận khác nhau và bạn cũng nên nhớ rằng mã sử dụng các đối tượng không nhất thiết phải là hướng đối tượng nhưng vẫn có thể được viết theo thủ tục. Theo cách tương tự, mã không sử dụng các đối tượng vẫn có thể ở dạng mô-đun.
Tôi sẽ chọn sử dụng mysqli
lớp học mọi lúc, mặc dù. Không có sự khác biệt đáng kể về hiệu suất. Có thể bạn sẽ không nhận ra một số ưu điểm của việc sử dụng lớp DB chẳng hạn như tính đa hình được đơn giản hóa, vì vậy lý lẽ duy nhất của tôi để sử dụng lớp là tôi thích cú pháp hơn. Tuy nhiên, thay vì sử dụng mysqli
trực tiếp, tôi có thể khuyên bạn nên mở rộng hoặc soạn nó. Bạn chỉ có thể làm điều này với lớp học.
class DB extends mysqli {
public function __construct() {
parent::__construct($_SERVER['DB_HOST'],
$_SERVER['DB_USER'], $_SERVER['DB_PASS']);
}
}
Đây là một ví dụ rất nông cạn.
Một ví dụ về tính đa hình mà tôi đã đề cập ở trên sẽ như thế này:
class User implements DAO {
private $db;
public function __construct(DB $db) {
$this->db = $db;
}
}
//Testing code is simplified compared to using it in production
class TestDB extends DB {}
new User(new TestDB);
new User(new DB);
Nhân tiện, tôi muốn phân loại rõ hơn PDO
qua mysqli