2011-12-28 16 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

啓発に感謝します。 –

関連する問題