Аватар для Behelit
1 / 1 / 0
Регистрация: 07.05.2014
Сообщений: 44

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

02.09.2014, 08:27. Показов 6478. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru