2010-05-29 73 views
0

目前我正在與PHP的商業項目。我認爲這個問題不適用於所有編程語言的PHP,只是想討論你們的解決方案。PHP商業項目功能定義

我在MVC框架(CodeIgniter)中工作。

模型類中的所有數據庫事務代碼。

以前,我用不同的函數名分開不同的搜索條件。 只是一個例子

function get_student_detail_by_ID($id){} 
function get_student_detail_by_name($name){} 

正如你所看到的功能其實可以合併爲一個,只需添加一個參數吧。但是你用項目衝刺的東西,你以前不會回頭看到類似的功能只是做些改變才能達到目標。在這種情況下,我們發現那裏有很多功能並且很難維護。

最近,我們嘗試組實體一個終極搜索 像這樣

function get_ResList($is_row_count=FALSE, $record_start=0, $arr_search_criteria='', $paging_limit=20, $orderby='name', $sortdir='ASC') 

我們試圖讓此功能適用於所有的搜索條件。但是,我們的系統越來越大,搜索標準不會超過1-2個表格。它需要與其他表具有不同的用途。 我們有什麼用IF ELSE完成,

if(bla bla bla) 
{ 
    $sql_join = JOIN_SOME_TABLE; 
    $sql_where = CONDITION;  
} 

末,我們發現很難維持性功能。它也很難調試。

我想問你的意見,他們解決這類問題的商業解決方案是什麼,如何定義一個函數以及如何修改它。我認爲這是鏈接項目管理技巧。希望你願意與我們分享。

謝謝。

回答

0

我對ORM和Active Record做了一些研究。對於我的情況,我沒有發現通過切換到ORM將幫助我更好。

我發現ORM在READ數據中做得不是很好。但在創建,更新和刪除方面很好。

我目前的解決方案是,在傳遞給$ this-> db-> query()之前,每個模型都會重新編譯我自己的OR_WHERE()/ AND_WHERE()。維護和定製更容易。

0

恭喜你,你已經發明瞭一種ORM :)

有很多commercial ORM solutions,但是,在我看來,他們都沒有比你更好。而且我會選擇好的SQL。

+0

你是什麼意思由ol'好的SQL是舊的? – Shiro 2010-05-29 15:49:36

2

如果您使用笨,只是使用:

http://www.overzealous.com/dmz/

我不知道做什麼,我甚至沒有用它做。

+0

哇..這是我的新事物,感謝您的建議!喝彩。我需要更多的技能來做商業實踐。 – Shiro 2010-05-30 01:13:53