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