2011-12-28 17 views
14

MySQLi works fine inside a class with no namespace and outside a class.एक नाम स्थान के अंदर MySQLi का उपयोग कैसे करें

मैं हाल ही में नाम स्थान का उपयोग शुरू किया और अब मैं बहुत निम्नलिखित की तरह एक कोड पर ठोकर खाई है

namespace Project; 

class ProjectClass{ 

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

} 

हालांकि, यह मेरे पास वापस एक संदेश के साथ रिपोर्ट

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

मेरा प्रश्न है; मैं एक वर्ग के अंदर mysqli का उपयोग कैसे करूं जो नेमस्पेस का उपयोग करता है?

उत्तर

30

डिफ़ॉल्ट रूप से, PHP आपके वर्तमान नामस्थान से कक्षाएं लोड करने का प्रयास करेगा। ग्लोबल नेम स्पेस में वर्ग का संदर्भ लें:

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

यह एक ही बात है जब एक अलग नाम स्थान में एक वर्ग की चर्चा करते हुए तुम क्या होता है:

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

ध्यान दें कि आप शुरू दूर छोड़ दिया है, तो बैकस्लैश, PHP आपके वर्तमान नेमस्पेस से संबंधित वर्ग को लोड करने का प्रयास करेगा। निम्नलिखित कोड एक क्लास Foo नामित के लिए नाम स्थान Project\Some\Namespace में दिखेगा: वैकल्पिक रूप से

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

, आप स्पष्ट रूप से नामस्थान आयात और अपने आप अस्पष्टता बचा सकते हैं:

namespace Project; 

use Mysqli; 

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

अधिक जानकारी: http: //www.php .NET/manual/en/language.namespaces.fallback.php – cmbuckley

+0

ज्ञान के लिए धन्यवाद। –

संबंधित मुद्दे