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

Cách đề xuất để chuyển kết nối dữ liệu đến một lớp / phương thức PHP?

Truyền một chuỗi kết nối đến các lớp của bạn có rất nhiều bất lợi và không có lợi. Bạn đang đi đúng hướng, nhưng bạn muốn chuyển đối tượng cơ sở dữ liệu thay vì một chuỗi kết nối.

Dependency Injection là một cách tốt để cấp cho các lớp của bạn quyền truy cập vào cơ sở dữ liệu, điều này chỉ đơn giản có nghĩa là chuyển các phụ thuộc (tức là đối tượng cơ sở dữ liệu) cho các đối tượng cần chúng, thay vì bản thân đối tượng lấy phụ thuộc từ một biến toàn cục của một loại nào đó.

Tôi khuyên bạn nên sử dụng một phương thức như setDb() trên các lớp của bạn để chuyển các đối tượng cơ sở dữ liệu, rồi lưu trữ nó như một thuộc tính để sử dụng nội bộ.

Ví dụ:giả sử bạn đã tạo đối tượng cơ sở dữ liệu $db trong một tập lệnh khởi tạo:

class SomeClass
{
    protected $db;

    public function setDb($db)
    {
        $this->db = $db;
    }

    public function something()
    {
        // do some query on the database using $this->db
    }
}

$obj = new SomeClass();
$obj->setDb($db);

$obj->something();

DI mang lại cho bạn những lợi ích mà bạn đã đề cập:khả năng dễ dàng chuyển đổi db mà không cần phải thực hiện nhiều thao tác trong các phương pháp của bạn. Có những lợi ích khác, cụ thể là dễ kiểm tra.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL chọn danh sách trả về truy vấn các tháng dưới dạng chuỗi từ giữa ngày bắt đầu / ngày kết thúc

  2. Cách nối các mảng với MySQL từ 3 bảng có mối quan hệ nhiều-nhiều

  3. Lặp lại các hàng trong kết quả dựa trên một giá trị số nguyên trong cột

  4. Tạo ứng dụng web từ Scratch bằng Python Flask và MySQL:Phần 4

  5. Cách giải quyết mệnh đề ORDER BY không có trong danh sách SELECT gây ra MySQL 5.7 với SELECT DISTINCT và ORDER BY