2011-07-13 85 views
1

我正在用新的基於PDO的版本替換舊數據庫層。使用PDO傳遞構造函數參數:: FETCH_CLASSTYPE

但是我遇到了一個問題:

當使用fetchObject獲取對象,我可以傳遞參數的對象構造。

但是我現在正在移植一個有幾個子類的類,它們都存儲在同一個表中,我想使用FETCH_CLASSTYPE。這意味着我必須使用我不能傳遞構造函數參數的常規方法fetch()

是否有另一種方法可以做到這一點?

我可以重新命名構造函數,並手動調用它,但我想要一個乾淨的解決方案。

回答

0

似乎沒有內置解決方案。無論如何,API的這部分看起來不太好。您可以使用一種解決方法:

$stmt->setFetchMode(PDO::FETCH_ASSOC); 

while ($row = $stmt->fetch()) { 
    /* "Factory" */ 
    $obj = new $row['class_name_column']('constructor', 'args'); 
    unset($row['class_name_column']); 
    foreach ($row as $key => $value) { 
     $obj->$key = $value; 
    } 
    var_dump($obj); 
} 
0

我認爲在獲取後立即調用返回實例的初始化方法是完全乾淨的。

0

據報道作爲#62567一個PHP錯誤

你可以解決它的任何類名傳遞的第二個參數與構造

相關問題