Я пишу небольшую библиотеку в PHP, и у меня возникают проблемы со встроенными классами, которые не читаются. Например:
namespace Woody; class Test { public function __construct() { $db = new PDO(params); } }
Это дает мне:
PHP Неустранимая ошибка: класс «Woody \ PDO» не найден в /var/www/test.php
Эта:
namespace Woody; use PDO;
Или:
$db = new \PDO(params);
Точка в том случае, что класс PDO
не является полным квалифицированным именем в вашем пространстве имен, поэтому PHP будет искать Woody\PDO
который недоступен.
См. Правила разрешения имен Документы для подробного описания того, как имена классов разрешены для Полноценного имени .
Добавьте обратную косую черту перед именем класса, т.е.
$db = new \PDO(params);
Нижеследующее должно работать:
namespace Woody; class Test { public function __construct() { $db = new \PDO(params); } }
Вам нужно префикс PDO с обратной косой чертой, чтобы PHP знал, что он находится в глобальном пространстве имен.