Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sự khác biệt trong triển khai thủ tục và hướng đối tượng của mysql trong php?

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hiển thị đối chiếu kết nối của bạn trong MySQL

  2. DECIMAL mysql và không gian lưu trữ?

  3. Chênh lệch tính bằng phút giữa hai trường thời gian trong MySQL

  4. Cách so sánh hai cột để tìm các bản ghi chưa khớp trong MySQL

  5. jQuery update div thời điểm một bảng được cập nhật