2010-05-29 52 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