开发者

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

I'm writing a small library in PHP and i'm having some problems with built-in classes not being read. For example:

namespace Woody;

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

This gives me:

PHP Fatal error: Class 'Woody\PDO' not found in /var/ww开发者_如何学Cw/test.php


This:

namespace Woody;
use PDO;

Or:

$db = new \PDO(params);

Point in case is, that the class PDO is not a full qualified name within your Namespace, so PHP would look for Woody\PDO which is not available.

See Name resolution rulesDocs for a detailed description how class names are resolved to a Fully qualified name.


Add a backslash before class name, ie

$db = new \PDO(params);


The below should work:

namespace Woody;

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

You need to prefix PDO with the backslash so PHP knows it's in the global namespace.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜