我正在尝试在对象上使用PDO :: FETCH_CLASS。我正在使用命名空间,只需输入:
$result = $query->fetchAll(\PDO::FETCH_CLASS, 'Product');
或
$result = $query->fetchAll(\PDO::FETCH_CLASS, '\Product');
导致PHP在应用程序的根目录中查找Product.php
。
我可以使用:
成功实例化新产品 $product = new Product();
所以我知道我的名字间距正常。
这不可能吗?或者我是否需要首先实例化产品,然后在查询后填充它?
答案 0 :(得分:8)
我怀疑PDO不会查找别名的类名或解析当前的命名空间。所以你必须明确地传递它:
= $query->fetchAll(\PDO::FETCH_CLASS, __NAMESPACE__ . '\\Product');
Exactness nitpick:请注意,虽然单个反斜杠确实有效,但在单引号中它旨在逃避文字单引号和本身。