Intereting Posts
Как найти только «новые» сообщения при использовании функций IMAP PHP для почтового ящика POP3? Могу ли я имитировать взаимодействие Tumblr, такое как reblog и т. П. Через API? PHP не может распаковать gzip-данные Golang Уничтожение JSON на PHP с помощью кастинга? Письма появляются из поля комментариев на php-сайте после добавления комментария. Как ограничить показанные буквы в строке? Нужно ли использовать mysql_close (соединение)? Мне нужен более эффективный способ проверки наличия нескольких параметров $ _POST isset Почему PHP strlen () возвращает отрицательную длину? PHP unset get parameter? Доступ к @ атрибуту из SimpleXML proc_open возвращает false, но не записывает в файл ошибки – проблема с правами? Facebook публиковать поток напрямую с помощью PHP Изменение переменной сеанса PHP между страницами создать PHP с ant-скриптами Пытаясь использовать завиток для выполнения GET, отправляемое значение допускает null

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

Я пишу небольшую библиотеку в 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 знал, что он находится в глобальном пространстве имен.