2011-10-27 20 views
3

オブジェクトに対してPDO :: FETCH_CLASSを使用しようとしています。私は名前空間を使用して、ちょうど入っています:PHPでPDO FETCH_CLASSと名前空間の問題

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

または

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

結果は、アプリケーションのルートに Product.phpを探しています。

私は正常に使用しても新しい製品をインスタンス化することができます

$product = new Product(); 

だから私は私の名前の間隔が働いている知っています。

これはできませんか?または、商品を最初にインスタンス化した後、クエリからそれを移入する必要がありますか?

答えて

7

私は、PDOが別名のクラス名を検索したり、現在の名前空間を解決していないと思われます。だから、明示的にそれを渡すことがあります。

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

正確にnitpickは:単一のバックスラッシュは、作業を行いながら、一重引用符では、リテラル単一引用符自体をエスケープするために意図されていることに注意してください。

+0

ああ、はい。 __NAMESPACE__をクラスとは別に使用することはできませんでしたが、 'app \ controller \ product'というフルパスを使用しました。それはうまくいった。ありがとう。 – BobFlemming

関連する問題