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.
精彩评论