PHP名称空间和内置类的问题,如何修复


Problems with PHP namespaces and built-in classes, how to fix?

我正在写一个PHP小库,我有一些内置类不被读取的问题。例如:

namespace Woody;
class Test {
  public function __construct() {
    $db = new PDO(params);
  }
}

这给了我:

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

This:

namespace Woody;
use PDO;

或:

$db = new 'PDO(params);

点的情况是,类PDO不是一个完整的限定名在您的命名空间,所以PHP将寻找Woody'PDO是不可用的。

请参阅名称解析规则Docs了解如何将类名解析为完全限定名的详细说明。

在类名前加反斜杠,即

$db = new 'PDO(params);

下面应该可以工作:

namespace Woody;
class Test {
    public function __construct() {
        $db = new 'PDO(params);
    }
}

你需要在PDO前加上反斜杠这样PHP就知道它在全局命名空间