#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’. что сработало. Спасибо.