|
36 / 33 / 10
Регистрация: 14.06.2013
Сообщений: 432
|
|
Модульное программирование на php08.12.2016, 15:25. Показов 2047. Ответов 12
Метки нет (Все метки)
Здравствуйте, пишу веб-приложения с помощью шаблона MVC, недавно столкнулся с концепцией модульного программирования
Нашел такое мнение: "Написал работающую функцию (процедуру) закинул её в модуль и забыл о её реализации" Это не особо хорошо, когда можно родственные операции объединить в один класс, например, вычисление интегралов методом Симпсона, трапеций и парабол я могу занести в один класс, описав данные методы, но по концепции модульного программирования мне нужно разбить по 3-м отдельным файлам(модулям) эти методы. Еще вопрос: каким образом оптимально связать MVC и модульное программирование, если это целесообразно Выскажите свое мнение по этому поводу
0
|
|
| 08.12.2016, 15:25 | |
|
Ответы с готовыми решениями:
12
Выполнить программирование: модульное, без модульное Модульное программирование Модульное программирование |
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|||
| 08.12.2016, 17:26 | |||
|
0
|
|||
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
||
| 08.12.2016, 18:39 | ||
|
Я тоже эксперементирую в этом направлении. Пока так: 1) модули храню в папке modules 2) каждый модуль эта папка с нужными классами. 3) модули вызываю из контроллера, остальные слои приложения стараюсь из контроллера не дергать. 4) методы модулей выполняют свою задачу и возвращают true/false. В случае ошибки достаю ее отдельно через метод getError. 5) пока что все модули статические
1
|
||
|
36 / 33 / 10
Регистрация: 14.06.2013
Сообщений: 432
|
|
| 08.12.2016, 18:58 [ТС] | |
|
tarasalk, спасибо, хотел видеть ответ в таком формате
![]() По поводу пункта 4: а если задача состоит в возвращении структуры, к примеру? Или вы геттеры используете здесь? Кстати, неплохая статья: http://structuralist.narod.ru/... hesion.htm
0
|
|
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
||
| 08.12.2016, 20:05 | ||
|
1) в самых простых случаях беру сразу из модели, благо есть ORM 2) в средних случаях из репозитория 3) в сложных из модуля.
0
|
||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|||
| 08.12.2016, 21:01 | |||
|
0
|
|||
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
|||||||
| 10.12.2016, 11:42 | |||||||
|
Сервис контейнер автоматически создает объект класса, достаточно указать его в качестве параметра для конструктора/метода. Сейчас такой вариант пробую:
Ошибки теперь сохраняю в статическом классе Error, чтобы не тянуть их через все слои. Потом в контроллере смотрю есть ли ошибки. Переносить контроллеры и вьюхи в модули пока смысла не вижу. Круто было бы если кто то тоже поделился своей структурой.
0
|
|||||||
| 16.12.2016, 11:27 | |
|
0
|
|
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||
| 16.12.2016, 12:56 | ||
|
1
|
||
|
100 / 70 / 26
Регистрация: 19.12.2014
Сообщений: 332
|
|
| 19.12.2016, 02:55 | |
|
Знаю что навлеку на себя шквал критики, но выскажу своё мнение. Просто чтобы знали, что такое мнение тоже есть.
Программисты PHP очень любят свою работу. Они любят её настолько, что никогда не упускают возможности сделать свою жизнь сложнее, чтобы подольше проектировать и писать побольше кода, прежде чем приступить непосредственно к решению поставленной задачи. Поэтому в своём коде они предусматривают всё. Всё, что никогда не потребуется. Не буду говорить что я профессионал, но по роду деятельности мне доводилось и доводится копаться в огромном количестве php-приложений, написанных иногда гуру, а иногда совсем не гуру. И часто я вижу, что задачу можно было решить проще, а иногда гораздо проще, если убрать пару слоёв абстракции. Да, это будет не модно. Да, нельзя будет радоваться своей крутизне, но это будет работать быстро и эффективно. Для постройки своих приложений использую свой же движок. В нём "глубина" вложенности классов не превышает трёх. В большинстве случаев 1-2. Для веб-сайтов глубина вложенности по файловой структуре от index.php до самой глубокой точки не превышает 4. Какие преимущества это даёт? Любой человек сможет разобраться в моём коде за несколько минут. Код работает очень быстро. На проектирование тратится очень мало времени. Количество файлов и строк кода минимально. Отсутствуют подводные камни, когда программист становится заложником структуры и вынужден тратить часы и писать убогие костыли чтобы уложить код в рамках выбранного подхода. Какие недостатки? Никак нельзя похвалиться тем, что знаком со всеми модными парадигмами. Когда кто-то видит мой код, он всегда говорит "Фу, как просто, это же банальный mvc. Я бы сделал сложнее. Так как ты никто СЕЙЧАС не пишет". Знать и понимать шаблоны проектирования нужно. Для того чтобы проще ориентироваться в незнакомом коде. Я не хочу сказать, что модульный или иной шаблон - это зло. Зло - это то, что мы слишком часто пытаемся применить эти шаблоны там, где они не нужны. А их применение вообще оправдано крайне редко. Таково моё мнение. Конечно, можно неделю ломать голову над идеальной структурой, а можно за один день решить задачу и перейти к следующей. Я выбираю второй путь.
1
|
|
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
||||||
| 19.12.2016, 09:33 | ||||||
|
cia, согласен частично.
0
|
||||||
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
||||||||||||||||
| 19.12.2016, 10:14 | ||||||||||||||||
Отдельные модули кстати сильно помогают. Я вызываю модуль из контроллера и все. Сам модуль может быть как в 1 слой, так и в 10. Связи с другими модулями минимальны.
0
|
||||||||||||||||
| 19.12.2016, 10:14 | |
|
Помогаю со студенческими работами здесь
13
модульное программирование Модульное программирование
Модульное программирование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|