![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| lerguide |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.10.2008 Репутация: нет Всего: нет |
Генерирую страницу во фреймворке CodeIgniter.
Есть класс-модель, методы которого получают инфу из БД. Для генерации одной страницы вызывается несколько методов. В этих методах могут быть обращения к БД для получения одной и той же вспомогательной информации. Такие обращения я вынес в отдельные вспомогательные приватные методы. Но теперь надо же сделать так, чтобы не получать эту информацию несколько раз. Я не знаю как это сделать: - при первом обращении запоминать эту информацию в свойствах модели, а при последующих проверять эти свойства; - сделать статические переменные для этой информации во вспомогательных методах; - информация в любом случае запоминается в контроллере, так может ее передавать при вызове метода модели в параметрах (некрасиво и неудобно). По идее нужно хранить такую информацию именно в свойствах. Но меня смущает то, что это получаются кастрированные свойства: они могут быть инициализированы, а могут и не быть; по этой причине к ним на прямую и не обратишься - только через эти вспомогательные приватные методы. Так если все время придется обращаться только через методы, то не лучше ли уже сохранять эту инфу как статические переменные внутри методов, по крайней мере меньше свойств будет. Это сообщение отредактировал(а) lerguide - 16.4.2011, 18:00 |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
lerguide, Что то в ваших словах модели модели модели модели, а контроллер где?
Вот он как раз все прекрасно и запоминает... Вызывает один метод, получает данные, передает в другой и тп. |
|||
|
||||
| lerguide |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.10.2008 Репутация: нет Всего: нет |
Muerto, у меня есть такой вариант. Но мне кажется, что это не красиво.
Вот, например, метод получающий путь до текущей категории в дереве категорий - get_path_to_id($id); Внешне совершенно самодостаточный, неделимый и лаконичный метод. Но прежде чем я получу в нем путь, мне нужно будет предварительно сделать один запрос на выборку этого самого id. Если запоминать в контроллере, то получится типа такого: $node = $Model->get_id($id); $path = $Model->get_path_to_id($node); Хотя, я сейчас подумал, что может это и не так уж некрасиво :) Но все-таки модель этим всем должна заниматься. Контроллер только просит то что ему нужно. Да и если такой "промежуточной" информации будет много, и она будет разрозненной. Это сообщение отредактировал(а) lerguide - 16.4.2011, 18:25 |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
lerguide, Ну если у вас это делали бы не разные модели а одна, то можно вызывать методы модели - с модели...
Роль контроллера, контролировать путем манипуляции между моделями и видами(как правило одним видом в конце...) Но нету проблемы когда модели разные взять данные с одной, и отправить в другую. Предположим что у вас компания из трех человек, начальник и два рабочих. ОДин программист второй дизайнер. Так вот ваш начальник это контроллер ваш, а модели это рабочие... Одна модель разработала скрипт принесла начальнику, дальше начальник взял у программиста, и отдал дизайнеру. Он поступил не красиво? решать вам... а по мне так вполне логично |
|||
|
||||
| lerguide |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.10.2008 Репутация: нет Всего: нет |
Пока что у меня только одна модель. Не знаю будут ли еще.
Модель пока работает с таблицей дерева категорий. Мне нужно получить путь до категории и некоторый список категорий (сразу, для генерации одной страницы). В контроллере я вызываю get_path() и get_list() соответственно. Но и там и там сначала нужно получить информацию об id. Так вот, с одной стороны, логично вызывать методы get_path() и get_list() не заботясь о том, что им там нужно, и все тонкости реализовывать в модели. А с другой стороны, я не пойму, как это нормально делать в модели - что меня смущает я написал в сабже. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |