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

Mẫu kết nối cơ sở dữ liệu PHP singleton

Sử dụng singletons trong PHP được coi là thực hành xấu. Theo kinh nghiệm của tôi, vấn đề khó khăn nhất với chúng là các bài kiểm tra đơn vị. Thật khó để đảm bảo rằng hai bài kiểm tra là độc lập khi kiểm tra các singleton.

Tôi sẽ ủy quyền trách nhiệm cho ràng buộc "chỉ nên tồn tại một phiên bản" cho mã tạo đối tượng Db.

Ngoài ra đối với tôi, có vẻ như có sự hiểu lầm trong cách Singletons hoạt động trong PHP trái ngược với các ngôn ngữ khác:Ví dụ:nếu bạn có 10.000 yêu cầu đồng thời, thì mỗi yêu cầu chạy trong một quy trình hoặc chuỗi PHP riêng biệt, có nghĩa là tất cả chúng sẽ có ví dụ của "singleton", không có chia sẻ đối tượng này cho nhiều hơn một yêu cầu (khi chạy PHP trong các kịch bản phụ trợ web phổ biến)

Không có "tổng hợp kết nối" trong PHP, nhưng bạn có thể sử dụng mysqli kết nối liên tục cho mysql. Nó có thể đạt được bằng cách chuyển p: trước tên máy chủ khi tạo mysqli. Điều này có thể hữu ích ở đây, nhưng hãy xử lý nó một cách cẩn thận ( nghĩa là hãy đọc tài liệu trước )

Tuy nhiên, chỉ về lý thuyết, một singleton trong PHP phải biết thực tế là ai đó có thể sử dụng clone . Có nghĩa là trong trường hợp của bạn, có thể làm được điều đó:

$db = DB::getInstance();
$db2 = clone $db; 

Để tránh điều đó, bạn có thể triển khai __clone() phương pháp như thế này:

public function __clone() {
    throw new Exception("Can't clone a singleton");
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bộ nhớ đệm câu lệnh chuẩn bị với MySQL &JDBC

  2. Làm cách nào để chèn giá trị trong bảng bằng khóa ngoại bằng MySQL?

  3. Cách tìm ra vị trí của tệp cấu hình MySQL hiện được sử dụng trong linux

  4. Mẫu kết nối cơ sở dữ liệu PHP singleton

  5. Thiết kế bảng thực thể-thuộc tính-giá trị