PDO FETCH_CLASS и проблема с пространством имен

#php #pdo

#php #pdo

Вопрос:

Я пытаюсь использовать PDO::FETCH_CLASS для объекта. Я использую пространство имен и просто ввожу:

 $result = $query->fetchAll(PDO::FETCH_CLASS, 'Product');
 

или

 $result = $query->fetchAll(PDO::FETCH_CLASS, 'Product');
 

результаты поиска в PHP Product.php находятся в корне приложения.

Я могу успешно создать экземпляр нового продукта, используя:

  $product = new Product();
 

Так что я знаю, что мой интервал между именами работает.

Разве это невозможно? Или мне нужно сначала создать экземпляр продукта, а затем заполнить его из запроса?

Ответ №1:

Я бы заподозрил, что PDO не ищет псевдонимные имена классов и не разрешает текущее пространство имен. Поэтому вы должны передать это явно:

 = $query->fetchAll(PDO::FETCH_CLASS,  __NAMESPACE__ . '\Product');
 

Придирка к точности: обратите внимание, что, хотя одиночная обратная косая черта действительно работает, в одинарных кавычках она предназначена для экранирования буквальных одинарных кавычек и самой себя.

Комментарии:

1. ах, да. Не удалось использовать ПРОСТРАНСТВО имен, поскольку оно отделено от класса, а просто использовал полный путь ‘app controllerproduct’. что сработало. Спасибо.