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

Làm cách nào để sử dụng $ db từ .php khác sang lớp .php khác bằng OOP?

Tốt nhất bạn nên tạo một DB lớp hoặc khai thác một cái đã được tạo để đạt được những gì bạn đang cố gắng làm.

Quy trình thông thường cho những thứ như thế này là gọi Lazy Loading / Dependency Injection . Nơi bạn đang chuyển các đối tượng cần thiết vào lớp.

Như Ben đã nêu trong nhận xét :

Một khía cạnh không nằm trong những điều được đề cập ở trên, tốt nhất bạn nên xem PHPTheRightWay , họ liệt kê rất nhiều rất nhiều trong tổng số nội dung, bao gồm Dependency Injection .

Cuối cùng bạn sẽ tạo ra một cái gì đó giống như. Sẽ tốt hơn nếu bạn làm theo ví dụ này để hiểu cách nó hoạt động:

 Class DB {

    function __construct($host, $user, $pass, $db) { 
        return $this->connect($host, $user, $pass, $db); 
    }

    function connect($host, $user, $pass, $db) {
        //..connect and all.
    }

    //...the rest of your functions/class...
}
 

Bây giờ chúng ta đến với những thứ thú vị. Trên thực tế, tiêm nó vào lớp học của bạn;

 Class Foo {

    $private $db;

    // your construct method here will ONLY except a `DB` class instance/object as $db. 
    // Try it with anything else and learn from the errors to understand what I mean.
    function __construct(DB $db){
        $this->db = $db;
    }

}

$db = new DB($host, $user, $pass, $db);
// you can error check it here

$foo = new Foo($db);// inject the $db object.
 

Nếu bạn chỉ muốn chia sẻ tài nguyên, bạn có thể khai thác global , nhưng nó thực sự không được khuyến khích .

 include('connection.db.php');

class MySQLqueries {
        public function samplefunction($queryString) {
            global $db;
            $sqlQry = mysqli->query($queryString);

            return ($sqlQry) ? "<pre>Query Executed Successfully</pre>" : die("<pre>An error occured -> $db->error</pre>");
        }
}
 



  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 cải thiện hiệu suất truy vấn với thứ tự theo thứ tự, nhóm theo và tham gia

  2. Ví dụ về DATE_ADD () - MySQL

  3. Laravel 5.1 - Kiểm tra kết nối cơ sở dữ liệu

  4. Không thể tạo Phiên bản Aurora RDS Multi-AZ

  5. MySQL:Tại sao thoát không hoạt động trong toán tử LIKE?