2009-12-29 2 views
1

Я собираюсь начать писать свое первое большое приложение CodeIgniter, но перед тем, как я начну, мне было интересно, какова должна быть роль библиотек. Я новичок в MVC, но из того, что я собираю, должна быть модель, где хранятся структуры данных (бизнес-логика). Итак, есть ли библиотека для написания логики приложения, в дополнение к контроллерам? Это хорошая идея объединить модели в библиотеках?Проектирование библиотек в CodeIgniter

Например, я собираюсь написать систему управления членами, которая будет иметь профили и сообщения. Какова должна быть настройка MVC + L (библиотека)? 2 модели (профиль, сообщение) и библиотека, которая их объединяет? Библиотека для каждого объекта? Нет библиотек, просто моделей и контроллеров?

ответ

6

Библиотеки в CodeIgniter - это просто классы PHP. В любое время, когда вы обычно пишете класс PHP, в CodeIgniter вы должны написать «Библиотека».

В большинстве случаев данные, связанные с такими вызовами в базе данных или массивными манипуляциями с данными, должны идти в Модели. Очевидно, что HTML с небольшим количеством PHP идет в Views, а взаимодействие с пользователем принадлежит контроллеру.

Возможно, вам понадобится библиотека аутентификации, которая будет классом PHP. Тем не менее, существует несколько библиотек с открытым исходным кодом, таких как Tank Auth и DX Auth, на которые вы можете смотреть.

Правило большого пальца: традиционная библиотека PHP обычно представляет собой связку связанных функций, таких как функции даты, но в CodeIgniter будет помощником. Традиционным PHP-классом/объектом будет библиотека CodeIgnter.

Никогда не бойтесь читать исходный код в папках system/helpers и system/libraries

+0

использовать приложение/не система/- это старый ответ. – sitesbyjoe

0

Я предлагаю только модели и контроллеры. Я думаю, что библиотека предназначена для логики, которую можно использовать повторно, а не для конкретного приложения. И я думаю, что если контроллер и модель могут справиться с этой задачей, просто подойдите к ним.

+1

Библиотека может содержать логические функции для чего угодно, а не только для конкретных приложений. –

0

Бизнес-логика должна быть в контроллерах, только взаимодействие с базой данных должны идти в модели.

Мой вопрос Я спрашиваю себя, куда положить что-то очень просто. Я смотрю на «ifs» в моей модели. Есть ли те, которые там проверяют данные? Если они проверяют, работает ли взаимодействие с базой данных или нет, код там, где он принадлежит. Если он проверяет значения возвращаемых данных, он, вероятно, находится в неправильном месте (и должен идти в контроллер).

Как сказал Зак, HTML с небольшим кодом php должен идти в представлениях.

Библиотеки предназначены для поддержки классов. Например, я создал библиотеку (класс) для специального календаря в прошлом.

Если вам даже не нужен класс, поставьте его в помощнике. (например, потому что у вас есть только одна функция манипуляции с строкой, но вы хотите использовать ее в разных местах)

0

Я согласен с тем, что говорит Деннис Декоен. Но после некоторого размышления, почему разработчики библиотеки auth создают сочетание библиотек и помощников в своем приложении auth, где их библиотеки выполняют гораздо более «не связанные» процедуры по сравнению с природой классов php.

Смежные вопросы