Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/32: Рейтинг темы: голосов - 32, средняя оценка - 4.59
 Аватар для Behelit
1 / 1 / 0
Регистрация: 07.05.2014
Сообщений: 44

MVC- грамотная реализация модели

02.09.2014, 08:27. Показов 6436. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Осваиваю ООП+MVC, брал пример из http://habrahabr.ru/post/150267/
Хочу научиться вести порядок у себя в классах, по всем стандартам, чтобы и другие могли разбираться в моём коде
Вот такая структура каталогов (4 папки):
core:
Название: core.png
Просмотров: 311

Размер: 1.4 Кб
M-V-C:


в core/model.php такой код:
PHP
1
2
3
4
5
6
class Model
{
    public function get_data()
    {
    }
}
из контроллера вызываю model_portfolio.php
в данном случае, для отображения портфолио класса model_portfolio.php - мне не хватает
хочу туда добавить дополнительные классы (функции), например, переключатель страниц (pagination), фильтры и т.д., которые требуются практически везде

мои варианты:
1) все универсальные классы, положить в каталог core и:
а)вызывать из model_portfolio.php посредством
PHP
1
new NewClass();
б)унаследовать класс Model.php, а потом вызывать из model_portfolio.php посредством
PHP
1
$this->obj();
в)вызывать, и соединять все эти модели в контроллере, создавая классы
PHP
1
new model_portfolio(); new pagination(); ...
2) сделать тоже самое, но положить все вспомогательные классы в папку Models

Или надо как-то сортировывать? Часто используемые классы, которые потребуется в Любом проекте, положить в core, а классы, которые также часто используются, но для одного отдельного проэкта - положит в папку Models?

Например класс по работе БД, я сделал статическим, и положил в core, может и тут ошибся?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.09.2014, 08:27
Ответы с готовыми решениями:

Грамотная реализация MVC ООП
Доброе утро всем, уже вторые сутки лазию в просторах интернета и не могу найти нормальную реализацию MVC ООП, без ООП нашел, но все жи...

Модели MVC и связанные таблицы
Всем привет! Прошу помочь знающих с выбором паттернов/структуры моделей для решения следующей задачи: допустим, в базе данных есть...

Реализация CRUD MVC
Здравствуйте. Извиняюсь за глупый вопрос, может не правильно формулирую и вообще не о том думаю, но все же прошу направить в нужное...

6
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
02.09.2014, 13:11
Цитата Сообщение от Behelit Посмотреть сообщение
а классы, которые также часто используются, но для одного отдельного проэкта - положит в папку Models?
положите их в папку components или extensions
2
 Аватар для Behelit
1 / 1 / 0
Регистрация: 07.05.2014
Сообщений: 44
02.09.2014, 18:13  [ТС]
Цитата Сообщение от ads Посмотреть сообщение
положите их в папку components или extensions
положить в папку model/extensions или отдельно extensions?

Значит основные классы, всюду используемые, держать в core.
В папке model хранить только то, что относится к контроллеру(controller) и виду(view) (model_portfolio.php и ничего лишнего)
В extensions, всё вспомогательное для проекта
Я правильно понял?
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
02.09.2014, 18:31
www\index.php - точка входа всех запросов
www\themes -css js и виды(вьюхи) в терминах mvc
www\images - понятно
www\protected\models
www\protected\controllers
www\protected\extensions
www\protected\core
Цитата Сообщение от Behelit Посмотреть сообщение
В папке model хранить только то, что относится к контроллеру(controller)
модель вообще никак не связана и не может быть связана с контроллером. Она по определению не может к нему относиться. Если, конечно не хотите строить приложение на "толстых тупых уродливых контроллерах". Это термин, в интернете есть описание.
виды и их оформление сидят в паке themes
2
 Аватар для Behelit
1 / 1 / 0
Регистрация: 07.05.2014
Сообщений: 44
02.09.2014, 19:57  [ТС]
Цитата Сообщение от ads Посмотреть сообщение
модель вообще никак не связана и не может быть связана с контроллером. Она по определению не может к нему относиться. Если, конечно не хотите строить приложение на "толстых тупых уродливых контроллерах". Это термин, в интернете есть описание.
виды и их оформление сидят в паке themes
Ок, хорошо.
Получается, классы в папках models,extensions,core - это всё и есть Модель (из MVC)
С core всё ясно, теперь мне бы чётко понять, как различать extensions и models.
В models складывать те классы, которые используются единожды, для определенного запроса?

И как вызывать классы из extensions - в моделях, или в контроллерах?

Вот тут не рекомендуют модели использовать с друг другом, то есть нельзя из models вызвать extensions? Тогда extensions можно вызывать в контроллерах, что не всегда бывает удобно. Или они имели ввиду что из models использовать другой models нельзя?
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
02.09.2014, 21:25
Лучший ответ Сообщение было отмечено Behelit как решение

Решение

Цитата Сообщение от Behelit Посмотреть сообщение
И как вызывать классы из extensions - в моделях, или в контроллерах?
в зависимости от их назначения.они независимы. вызывайте их где хотите хоть в контроллерах хоть в моделях. но если ваши extensions относятся к модели - то вызывать из модели. если к контроллеру - вызывать из контроллера. Честно сказать утопия. Невозможно разорвать mvc на абсолютно независимые модули. но все стараются.
Цитата Сообщение от Behelit Посмотреть сообщение
Или они имели ввиду что из models использовать другой models нельзя?
можно. это будет сверхмодель объединяющая ваш запрос к данным двух моделей и запрос будет использовать две ваши модели.. на выходе третья модель. но это не будет контроллер. контроллер спросит третью супермодель на предмет получения данных.
чем дальше тем страшнее?
2
 Аватар для Behelit
1 / 1 / 0
Регистрация: 07.05.2014
Сообщений: 44
02.09.2014, 21:41  [ТС]
Цитата Сообщение от ads Посмотреть сообщение
можно. это будет сверхмодель объединяющая ваш запрос к данным двух моделей и запрос будет использовать две ваши модели.. на выходе третья модель. но это не будет контроллер. контроллер спросит третью супермодель на предмет получения данных.
чем дальше тем страшнее?
спасибо большое за информацию страшно было вначале, когда концепция mvc с 10 раза давалась, и еще слабые знания ооп
сейчас уже примерно всё ясно, вот некоторые стандарты хотел тут уточнить - что можно, а что нельзя
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.09.2014, 21:41
Помогаю со студенческими работами здесь

Реализация autoload на mvc
Подскажите как мне избавится от include в моем маршрутизаторе, и реализовать функцию autoload для автоматической загрузки классов. Вот мой...

MVC. Изменения в таблицах. реализация метода set
Здравствуйте уважаемые программисты. Прошу у Вас помощи. Задача: реализовать метод set, который будет изменять имя и все это с помощью...

Куда деть написанные функции в MVC-модели?
Я нашёл похожую тему в поиске(https://www.cyberforum.ru/php-oop/thread1250032.html), но я пока нахожусь на ещё более начальном уровне. ...

Грамотная реализация авторизации
В разделе C++ Builder'a есть статья как правильнее реализовать авторизацию в приложении ...

Грамотная реализация функции restart;
Здравствуйте! Остался, наверное, последний из намеченных мною пунктов в реализации игры - функиция рестарта! Как я себе это представляю:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru