PHP命名空间和内置类的问题,如何解决?

Woo*_*ero 24 php namespaces

我正在用PHP编写一个小型库,我遇到了一些内置类没有被读取的问题.例如:

namespace Woody;

class Test {
  public function __construct() {
    $db = new PDO(params);
  }
}
Run Code Online (Sandbox Code Playgroud)

这给了我:

PHP致命错误:/var/www/test.php中找不到类'Woody\PDO'

hak*_*kre 38

这个:

namespace Woody;
use PDO;
Run Code Online (Sandbox Code Playgroud)

要么:

$db = new \PDO(params);
Run Code Online (Sandbox Code Playgroud)

点大小写,该类PDO不是命名空间中的完全限定名,因此PHP会查找Woody\PDO哪些不可用.

有关如何将类名称解析为完全限定名称的详细说明,请参阅名称解析规则文档.

  • @tastro:我认为使用`use`是一种很好的做法.然后,您可以在文件的顶部看到哪些类被接收. (2认同)

ain*_*ain 6

在类名之前添加反斜杠,即

$db = new \PDO(params);
Run Code Online (Sandbox Code Playgroud)