如何在命名空间内使用MySQLi

Ask*_*õmm 18 php mysqli namespaces

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

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

 namespace Project;

 class ProjectClass{

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

 }
Run Code Online (Sandbox Code Playgroud)

但是,它向我报告了一条消息

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

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

Pro*_*tic 36

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

$db = new \mysqli(/* ... */);
Run Code Online (Sandbox Code Playgroud)

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

$foo = new \Some\Namespace\Foo();
Run Code Online (Sandbox Code Playgroud)

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

namespace Project;
$foo = new Some\Namespace\Foo();
Run Code Online (Sandbox Code Playgroud)

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

namespace Project;

use Mysqli;

class ProjectClass
{
    public static function ProjectClassFunction()
    {
        $db = new Mysqli(/* ... */);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 更多信息:http://www.php.net/manual/en/language.namespaces.fallback.php (2认同)