Một lưu ý cần thêm: Bạn không thể sử dụng global
bên trong một lớp và dĩ nhiên bạn phải sử dụng global
để làm cho đối tượng của mình hoạt động khi sử dụng $wpdb
.
Trong khi bạn không thể sử dụng global
ngay bên trong một lớp học, bạn phải khai báo $wpdb
như global
bên trong một hàm bên trong lớp, và điều này không làm việc.
ví dụ: Điều này cho bạn một lỗi:
class wpdb_test {
global $wpdb; // can't use global as a direct 'child' of a class
public function __construct() {
...
}
}
Vì không thể sử dụng trực tiếp global
trong lớp học. Tương tự, chỉ cần tham khảo $wpdb
bên trong lớp cũng sẽ cho bạn một lỗi vì đối tượng không biết số $wpdb
là gì. Bạn phải khai báo $wpdb
là global
từ bên trong một hàm bên trong lớp học của bạn.
ví dụ: Này làm việc tốt:
class wpdb_test {
public $variable_name;
public function __construct() {
global $wpdb; // safe to use because it's inside a function
...
}
}
... và vì $wpdb
đã được tuyên bố global
bên trong một hàm bên một lớp học mà bạn có thể sử dụng nó.
2,5 năm sau và câu trả lời của bạn đã giúp tôi. Cảm ơn! – Branndon
3 năm sau, và câu trả lời của bạn cũng giúp tôi. Cảm ơn! –
4 năm sau, và câu trả lời của bạn đã làm điều đó một lần nữa! Cảm ơn! – user1758777