【问题标题】:PDO FETCH_CLASS and Namespacing issuePDO FETCH_CLASS 和命名空间问题
【发布时间】:2011-10-27 10:59:17
【问题描述】:

我正在尝试对一个对象使用 PDO::FETCH_CLASS。我正在使用命名空间并输入:

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

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

导致 PHP 在应用程序的根目录中寻找 Product.php

我可以通过以下方式成功实例化一个新产品:

 $product = new Product();

所以我知道我的名字间距是有效的。

这不可能吗?还是我需要先实例化一个产品,然后从查询中填充它?

【问题讨论】:

    标签: php pdo


    【解决方案1】:

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

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

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

    【讨论】:

    • 啊,是的。无法使用 NAMESPACE ,因为它与类分开,但只使用了完整路径“app\controller\product”。这有效。谢谢。
    猜你喜欢
    • 2020-05-31
    • 2017-11-19
    • 2012-01-27
    • 2011-12-24
    • 2015-04-24
    • 2011-02-05
    • 2010-12-27
    • 2012-10-07
    相关资源
    最近更新 更多