2012-01-21 25 views
1

我正在開發一種「模型」,我希望能夠通過構造函數選擇幾行(或僅一個),然後能夠將它們視爲一個對象,例如,選擇所有具有「admin」作爲作者爲10的極限將是帖子:選擇數據庫行並將它們視爲對象

$posts = new Post(array(
    'where' => array('author' => 'admin'), 
    'limit' => array(0 => 10), 
    # optional: 'order' => array($by => 'desc/asc') 
)); 

# get a field 
$id = $posts->row[0]['id']; 

# editing fields 
$posts->row[1]['body'] = 'new body'; 
$posts->row[2]['body'] = 'new body for post # 3'; 
$posts->update(); 

# delete all the selected posts 
$posts->delete(); 

... et cetera. 

但我真的不喜歡它的方式,選擇的職位。它看起來太機械,充滿陣列,我不太喜歡。 我也想過「一個對象是一行」,但這需要10個職位的需求來執行10個不同的查詢。這不是有效的。

問題1 有沒有類似的模式或類似的腳本,可以激勵我嗎?我是第一個認爲數據庫行可以被看作是PHP對象的人(與這個概念一起出現的所有專業人員)。

問題2 可能有另一種方法來選擇多行嗎?可能是強制開發人員僅將表的主鍵(如帖子ID)指定爲選擇器的解決方案? (< =我不認爲這是一個解決方案)。

回答

2

大多數ORM(對象關係映射器)嘗試以某種方式給你的問題提供答案。

我建議看看DoctrinePropel來獲得想法。另外,在其他語言(如Microsoft的LINQ for .NET)中可以看到它。

我自己,我最近發佈了一個名爲Solid Oxygen的PHP ORM。如果需要,請查看文檔。我相信我所做的與您嘗試開發的內容非常接近。

1

是的,有些人以前曾經想到過。你有大量的PHP框架將數據庫條目作爲對象處理。你可以看看Code IgniterCakePHPSymfony。這是個人觀點,但我認爲Code Igniter源代碼更易於理解,並且它可以爲實現整個對象層提供一個良好的基礎,如果在意識到可能會有多少麻煩之後仍然想實現它,請執行以下操作: )

相關問題