PHP использует класс в глобальном пространстве именPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 PHP использует класс в глобальном пространстве имен

Сообщение Anonymous »

У меня есть класс-оболочка БД, который использует PDO, и в конструкторе я создаю объект PDO. Класс-оболочка находится в нашем пространстве имен, и мы используем автозагрузчик. Проблема в том, что класс PDO не может быть найден в нашем пространстве имен, поэтому я попробовал использовать глобальное пространство имен, как описано здесь.

Код: Выделить всё

//Class file
namespace Company\Common;
class DB {
private function __construct(){
$this->Handle=new PDO(...);
}
}
В результате я получаю следующее (как и ожидалось):

Код: Выделить всё

Warning: require(...\vendors\Company\Common\PDO.class.php): failed to open stream
Если я сделаю это:

Код: Выделить всё

namespace Company\Common;
use PDO;
Я понял:

Код: Выделить всё

Fatal error: Class 'DB' not found in ...\includes\utils.php
И utils.php содержит это в строке ошибки, которая работала нормально до реализации пространств имен:

Код: Выделить всё

DB::getInstance();
В качестве альтернативы я попробовал это:

Код: Выделить всё

namespace Company\Common;
class DB {
private function __construct(){
$this->Handle=new \PDO(...);
}
}
Который пытался загрузить класс PDO в наше пространство имен, как это было изначально.

Как я могу решить эту проблему ? Я думал, что использование PDO или new \PDO загрузит глобальный класс PDO, но, похоже, он не работает?

Подробнее здесь: https://stackoverflow.com/questions/142 ... -namespace
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»