2011-10-27 39 views
3

我想在對象上使用PDO :: FETCH_CLASS。我使用的命名空間和剛進入:PDO FETCH_CLASS和命名空間問題

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

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

導致PHP的應用程序的根目錄中尋找Product.php

我可以成功實例化一個新的產品雖然使用:

$product = new Product(); 

所以我知道我的名字間距工作。

這不可能嗎?或者,我是否需要首先實例化產品,然後從查詢中填充它?

回答

7

我懷疑PDO不查找別名類名或解析當前命名空間。所以,你必須明確地傳遞:

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

確切性挑剔:請注意,雖然一個反斜槓沒有工作,在單引號意圖逃避字面單引號本身。

+0

啊,是的。無法使用__NAMESPACE__作爲與類分開的單獨名稱,只是使用完整路徑「app \ controller \ product」。哪些工作。謝謝。 – BobFlemming