Подтвердить что ты не робот

Проблемы с пространствами имен PHP и встроенными классами, как исправить?

Я пишу небольшую библиотеку в PHP, и у меня возникают проблемы со встроенными классами, которые не читаются. Например:

namespace Woody;

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

Это дает мне:

PHP Неустранимая ошибка: класс 'Woody\PDO' не найден в /var/www/test.php

4b9b3361

Ответ 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 знал это в глобальном пространстве имен.