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>");
}
}