PHP Коммерческий проект Функция определения - PullRequest
0 голосов
/ 29 мая 2010

В настоящее время я работаю с коммерческим проектом на 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;    
}

в конце мы обнаружили, что очень трудно поддерживать функцию. это также очень трудно отлаживать.

Я хотел бы спросить ваше мнение, какое коммерческое решение они решают, такого рода проблемы, как определить функцию и как ее пересмотреть. Я думаю, что это навык управления проектами связи. Надеюсь, что вы готовы поделиться с нами.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 30 мая 2010

Если вы используете codeigniter, просто используйте:

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

Я не знаю, что я вообще делал без него.

0 голосов
/ 01 июня 2010

После того, как я провел небольшое исследование ORM против Active Record. Для моей ситуации я не нашел большой помощи, переключение на ORM поможет мне лучше.

Я обнаружил, что ORM не очень хорошо подходит для чтения данных. Но хорош в создании, обновлении и удалении.

Мое текущее решение состоит в том, что каждая модель перекомпилирует мой собственный OR_WHERE () / AND_WHERE () перед передачей в запрос $ this-> db-> (). Это проще в обслуживании и настройке.

0 голосов
/ 29 мая 2010

Поздравляем, вы изобрели ORM :)

Есть множество коммерческих решений ORM но, на мой взгляд, все они не лучше ваших. И я бы пошел на добрый старый SQL.

...