Здравствуйте!
Работаю над проектом на CodeIgniter. Суть проекта - сайт составления определенных планов.
Постараюсь коротко и ясно описать, что уже есть, и где, как мне кажется, я что-то делаю неправильно или не понимаю чего-то.
Есть следующее:
- контроллер Activities (+модель, + вьюв), который работает с сущностями Activity (план определенного действия юзера IRL - с названием, датой-временем, описанием)
- контроллер Destinations (+модель, + вьюв), который работает с сущностями Destination (это план визита в какой-то город - с датами и описанием)
Каждому Activity соответствует какой-то один Destination, т.е. каждое запланированное действие происходит в заранее запланированном месте.
На данный момент всё реализовано так: помимо указанных контроллеров созданы классы Destination, Activity, а также Location (это база городов без привязки к планам юзера). Соответственно, объект класса Activity имеет свойство, которое в его конструкторе инициализируется объектом класса Destination. В то же время, объект класса Destination имеет свойство, инициализирующееся объектом класса Location.
В итоге, в контроллере Activities, почти в каждом методе, имеем примерно следующее:
// подгружаем класс работы с активностями
$this->load->library('activity');
// подгружаем класс работы с дестинейшенами
$this->load->library('destination');
// подгружаем класс работы с локациями
$this->load->library('location');
Т.е. поскольку в моделях проходят операции с объектами класса Activity, то необходимо подключать библиотеку Activity, а также Destination и Location. В итоге, в каждом методе контроллера дублируются три эти строчки. И мне кажется, что я что-то делаю неправильно :)
Оцените, пожалуйста, грамотность моего решения об организации кода и посоветуйте, как эту организацию можно улучшить.
То есть, если сформулировать вопрос конкретнее:
- Является ли мой подход к созданию классов Destination, Activity и Location корректным, в смысле вложенности объектов?
- Является ли мой подход к созданию классов Destination, Activity и Location корректным, в смысле помещения взаимозависимых сущностей в разные библиотеки?
- Является ли мой подход к подключению библиотек корректным?
.
UPD:
На сайте с документацией по CodeIgniter нашел некоторые примеры моделей:
public function insert_entry()
{
$this->title = $this->input->post('title');
$this->content = $this->input->post('content');
$this->date = time();
$this->db->insert('entries', $this);
}
Здесь мне особо нравится последняя строчка, поскольку,
как и отметил @evnuh, модель фактически представляет из себя строку в БД.
В моем же случае, в таблице activities есть поле destination_id (связь с таблицей destinations). А в коде я хотел реализовать это так, чтобы при инициализации Activity одним из ее свойств был объект Destination (уже содержащий всю информацию).
Как это лучше реализовать? Добиться полного соответствия "модель=строка в БД", или в конструкторе модели activities_model инициализировать ее свойство, создав объект класса destinations_model?