Зачем нужен Yii и другие подобные фремворки?

Скажу сразу, что я не знаю Yii и не работал с фреймворками. Недавно посмотрел видео https://www.youtube.com/watch?v=ewb_kNnMZZI где автор говорит, что все чаще используют фреймворки вместо cms для создания сайтов. Еще посмотрел на ютубе https://www.youtube.com/watch?v=qUVmT00CICA несколько десятков уроков по работе с Yii. Я так и не понял в чем преимущество движков относительно cms или самописных сайтов. Единственное это скорость разработки, но блин! Если мне нужен блогообразный сайт, то я возьму вордпрес и перепишу и допишу недостающий функционал в итоге создание сайта на wp займет в разы меньше времени, чем на фреймворке. Если нужен спецефический сайт, сервис, то полюбому нужно все с нуля писать самому, а не фреймворк использовать, я не говорю про какие-то классы. То есть использовать уже готовые функции, например для отправки почты и т.д. это разумно но где фреймворк я не понимаю. Не пойму, где и когда его можно реально применить. Подскажите? Может есть пример? Просьба сильно не пинать я новичок!
  • Вопрос задан
  • 7449 просмотров
Пригласить эксперта
Ответы на вопрос 4
index0h
@index0h
PHP, Golang. https://github.com/index0h
CMS - обычно решают конкретные узко специализированные задачи. Тот же WP - это блог и для такого кейса он вполне ок. Если вам нужен не совсем блог, на том же WP разработка вероятно будет сопровождаться анальной болью)). Это просто не целевое применение. То, что на WP и эл. магазины пишут - это просто демонстрация, что вилкой можно в ухе ковыряться))

Фреймворки обычно имеют более обобщенное целевое предназначение, по этой причине на них обычно легче сделать сайт-визитку, который эл. магазин, немного соц. сеть и частично CRM.

Пример где стоит использовать CMS: нужен эл. магазин, маленький бюджет и сроки тоже. Берем PrestaShop, устанавливаем, прикручиваем тему, настраиваем. Следующий!

Пример где стоит использовать фреймворк: вам нужен сайт на подобии того, на котором вы читаете мой ответ. Да, его можно за уши притянуть к понятию "блог", но переписывать и допиливать нужно многовато. Пойдем от обратного (вы таки выбрали WP)
* Потом поймете, что нужно было еще абстрактный уровень над WP написать, потому как после обновления ваши правки затерлись.
* Потом вдруг случается несчастье: ваш сайт стал популярным и железо не тянет, вы задумаетесь об масштабировании, но окажется, что система довольно таки целостная и что бы ее разделить придется не хило так по вкалывать.
* Через какое-то время ваш проект будет на 50% состоять переписанного кода и костылей, обходящих логику WP.
* Вдруг, на хабре вы читаете статью про уязвимость в вашей версии WP, начинаете ее прикручивать, при этом часть вашего сайта тупо отваливается из-за тех же артефактов и костылей. Вы, ясное дело, фиксите траблюки.
* В один прекрасный весенний денек, когда птички поют, радость, счастье, улыбки и бла-бла-бла вам звонит руководство и говорит, что "ничего не работает ( с )", отчаянье-печаль-грусть-уныние-безысходность-тлен. Зайдя на главную вы увидите замечательный баннер:
Вас взломал @ сраный_script_kid. Один глаз начнет немного дергаться, "это нормально ( с )". Восстановившись из бэкапа 4-х недельной давности, вы начинаете судорожно писать 1ккк проверок всего и вся. Система мутирует в еще более страшную и громоздкую хрень.
* Через какое-то время вас просят добавить фичу "на вчера", а что бы это сделать придется переписать добрую часть вашего монстра, вы (ну судя по количеству факапов) уже с прокачанным скилом "тебе фича не нужна эта" убеждаете руководство в этом, подобные разговоры возникают все чаще и в один прекрасный момент вы, или вас - увольняют.
* На смену вам компания набирает других человек, которые выльют пару ведер крови из глаз, убедят руководство, что код не саппортабельный и перепишут вашего монстра с 1,5кк строк до 0,3кк на нормальном фреймворке.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Фреймворк - каркас. Дословный перевод который в общем хорошо отражает суть. Это какая-то структура которой придерживается приложение.

В основе любой системы лежит какой-то каркас. Структура, способ организации кода, хоть какой-то. Берете класс маршрутизации (который связывает запрос и код, который должен выполниться для обработки оного), класс для работы с базой, менеджер конфигураций... и как-то так выходит что у вас уже есть фреймворк.

В основе любой CMS есть фреймворк. Даже в том же wordpress. Это внутреннее API этой CMS на основе которого она построена.

Сложность и уровень фреймворка определяет уровень абстракции которые он вводит. Если приводить пример - Symfony2 и все та же отправка почты. Отправка почты сама по себе относительно жирная операция. То есть из 200 милисекунд обработки запроса, 100 из них может занимать отправка почты. То есть пользователь получит страницу позже. В Symfony2 реализован слой абстракций над запросами ответами и потому, есть полный контроль за всем потоком данных. Фреймворку не составляет труда узнать когда мы закончили обрабатывать основной запрос. Так же у PHP (в зависимости от SAPI) есть возможность сказать серверу что "мы закончили обрабатывать запрос, можно отдавать его пользователю" и делать что-то еще. В результате мы можем вместо отправки писемь, помещать из в очередь и отправлять только после того как запрос ушел пользователю получая улучшение отзывчивости системы.

Важно заметить, что код приложения вообще никак не отличается. Если у нас внезапно не будет хватать мощностей серверов и у нас узким местом будут как раз таки такие вот отложенные операции - можно безболезненно, без внесения изменений в бизнес логику и основной код приложения, добавлять все в очередь на другом серваке и там все обрабатывать. Таким образом мы можем вносить изменения в систему максимально быстро без ущерба качеству.

Если мне нужен блогообразный сайт, то я возьму вордпрес и перепишу и допишу недостающий функционал в итоге создание сайта на wp займет в разы меньше времени, чем на фреймворке.

А вот тут не всегда так. Как минимум потому, что время реализации функционала под wordpress на базе его внутреннего фреймворка может занять у вас значительно больше времени, чем написать все на популярном нормальном фреймворке, не оптимизированном на конкретное решение + дописать блог.
Ответ написан
Комментировать
На фреймворке делается все быстро, структурно, красиво и удобно. Если завтра кому-то придется дописывать код проекта за вас, то новый программист намного быстрее войдет в работу если сайт написан на известном ему фреймворке. А если передавать полный самопис другому разработчику, то я ему не завидую)
Ответ написан
@mirakmalsulton
Суть фреймворка не в коде, а в правилах, которых все разработчики дожны соблюдать.
Когда решаете сделать нормальный сайт, а не сайт-визитку, то по любому вам придется с начало создать архитектуру, какие-то базовые правила для хранения файлов, именования классов, пространств имен и много чего еще, то есть создать для себя "рамку-разработки". Так вот это и называется фреймворком.
Вы либо заново изобретете велосипед, либо пользуетесь готовым решением проверенную временем и которую создатели гораздо опытнее вас.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы