2012-09-06 28 views
2

我一直在嘗試使用PDO嘗試爲結果創建默認返回類,並使其成爲默認行爲。擴展PDOStatement以使用默認的FETCH_CLASS。期望班級名稱爲字符串

這使我發現我需要擴展PDOStatement,以便它在實例化時設置我的默認類。

代碼中沒有明顯的錯誤。

當我在DB包裝器中創建PDO實例時,我將DB句柄設置爲使用我的擴展語句類並通過類名稱作爲結果類的參數。我通常會使用stdClass,但是我做了一個簡單的類,擴展了ArrayObject

$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_CLASS); 
$pdo->setAttribute(
    PDO::ATTR_STATEMENT_CLASS, 
    array(
     'DatabaseStatement', 
     array('DatabaseRow') 
    ) 
); 

這一切看起來似乎不錯,但我得到以下錯誤:

SQLSTATE[HY000]: General error: Invalid class name (should be a string)

這是不是最好的錯誤消息,並沒有真正提供任何信息,以什麼或發生錯誤的地方,但我相信這是由於上面的段,因爲一旦我刪除該部分,它不會再發出該錯誤。

希望有人能給我一個方向,因爲我一直在Google/SO-ing一段時間,但唉,無濟於事。

謝謝你在前進,隨時索要詳細信息,如果我所提供的是不夠的:]

回答

0

嘆息

好了,我已經解決了該問題。我的一個函數是在我的擴展PDOStatement類中的一個方法中覆蓋參數null,因此導致我的自定義行類被替換。 Oooops。

這是錯過了這麼簡單的事情。令人驚訝的是,當你離開一個項目很短的時間後,你會注意到它回來了!哈哈哈......呃,尷尬。