PDO FETCH_CLASS和命名空间问题

时间:2011-10-27 10:59:17

标签: 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 个答案:

答案 0 :(得分:8)

我怀疑PDO不会查找别名的类名或解析当前的命名空间。所以你必须明确地传递它:

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

Exactness nitpick:请注意,虽然单个反斜杠确实有效,但在单引号中它旨在逃避文字单引号本身。