2011-12-28 24 views
14

MySQLi works fine inside a class with no namespace and outside a class.Làm thế nào để sử dụng MySQLi bên trong một không gian tên

Gần đây tôi bắt đầu sử dụng tên miền không gian và bây giờ tôi đã vấp vào một mã số giống như sau:

namespace Project; 

class ProjectClass{ 

     public static function ProjectClassFunction{ 
      $db = new mysql(data, data, data, data); 
     } 

} 

Tuy nhiên, nó báo cáo lại với tôi với một thông điệp

"Fatal error: Class 'Project\mysqli' not found"

Câu hỏi của tôi là; Làm thế nào để sử dụng mysqli bên trong một lớp có sử dụng không gian tên?

Trả lời

30

Theo mặc định, PHP sẽ cố tải các lớp từ không gian tên hiện tại của bạn. Hãy tham khảo các lớp trong không gian tên toàn cầu:

$db = new \mysqli(/* ... */); 

Đây là điều mà bạn muốn làm khi đề cập đến một lớp học trong một không gian tên khác nhau:

$foo = new \Some\Namespace\Foo(); 

Lưu ý rằng nếu bạn rời đi đầu dấu gạch chéo ngược, PHP sẽ cố gắng tải lớp tương đối so với không gian tên hiện tại của bạn. Các mã sau đây sẽ xem xét trong không gian tên Project\Some\Namespace cho một lớp có tên Foo:

namespace Project; 
$foo = new Some\Namespace\Foo(); 

Ngoài ra, bạn rõ ràng có thể nhập không gian tên và tiết kiệm cho mình mơ hồ:

namespace Project; 

use Mysqli; 

class ProjectClass 
{ 
    public static function ProjectClassFunction() 
    { 
     $db = new Mysqli(/* ... */); 
    } 
} 
+2

Thông tin thêm: http: //www.php .net/manual/en/language.namespaces.fallback.php – cmbuckley

+0

Cảm ơn sự khai sáng. –

Các vấn đề liên quan