如何在命名空间内使用MySQLi

时间:2011-12-28 23:51:21

标签: php namespaces mysqli

  

MySQLi在没有命名空间和类外的类中工作正常。

我最近开始使用命名空间,现在我偶然发现了类似下面的代码:

 namespace Project;

 class ProjectClass{

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

 }

然而,它向我报告了一条消息

  

“致命错误:未找到类'Project \ mysqli'”

我的问题是;如何在使用命名空间的类中使用mysqli?

1 个答案:

答案 0 :(得分:35)

默认情况下,PHP会尝试从当前命名空间加载类。请参阅全局命名空间中的类:

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

在引用不同命名空间中的类时,这与您要做的事情相同:

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

请注意,如果您不使用开头的反斜杠,PHP会尝试相对于您当前的命名空间加载该类。以下代码将在命名空间Project\Some\Namespace中查找名为Foo的类:

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

或者,您可以显式导入名称空间并保存自己的歧义:

namespace Project;

use Mysqli;

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