Объясните человеческим языком, что такое веб-фреймворк на языке php?

Привет всем! Уже не первый месяц слышу советы (перейди на фреймворк). До этого писал всё сам с нуля. Нельзя игнорировать такое количество и хотя бы не разобраться с этой штукой. Всвязи с этим несколько вопросов, что это вообще такое. Прошу не давать ссылки на википедию и т.д. ибо я там давно уже все перечитал, но толком ничего дельного по своим вопросам не нашел:
1. Смогу ли я на фреймворке писать свои модули (любые и любой сложности) для моей CMS. Наверняка не в одном фреймворке нет функции анализа собственного контента (для последующего продвижения) по принципу поисковых роботов. Не помешает ли мне фреймворк создавать такие модули из-за своего ограниченного функционала.
2. Смогу ли я совершенствовать любой модуль фреймворка (например добавление комментариев) под свои нужны не мешая его обновлению (если выйдет новая версия). Или придется ли мне все переписывать с выходом новой версии, как это приходится делать на CMS типа DLE.
3. На сколько я буду зависеть от выхода новых версий? Например, я хочу сейчас скачать и дальше уже делать с ним что угодно не боясь, как в предыдущем вопросе, что найдут какую-то уязвимость и снова придется его обновлять и переписывать все свои коды в сотнях файлах php.
4. Можно ли будет (искюча вариант, что я скопирую сайт на локалку и год буду переписывать его с нуля на фреймворк) постепенно, не нарушая работу сайта, перенести собственные CMS на фреймворк учитывая то, что в них десятки модулей, собственные админ панели и т.д.
5. Ну и наконец, выбрал я, скажем, вреймворк. А разработчик прикрыл его дальнейшую разработку. Могу ли я оставить фреймворк и дальше им пользоваться не переписывая опять все файлы на новый фреймворк.

P.S. Извиняюсь, за, скорее всего, странные вопросы, но до этого я всё писал сам, не пользовался никакими CMS (коме DLE очень давно) или Фреймворками, поэтому не могу решить и начать переносить все свои проекты на фреймворк.
  • Вопрос задан
  • 5307 просмотров
Решения вопроса 4
index0h
@index0h
PHP, Golang. https://github.com/index0h
Смогу ли я на фреймворке писать свои модули для моей CMS

Если ваша CMS написана на фреймворке - да. Вполне возможна и частичная интеграция, но это путь боли.

Наверняка не в одном фреймворке нет функции анализа собственного контента по принципу поисковых роботов.

Фреймворк - это каркас для построения приложений. Он не решает бизнес задачи, вместо этого - технические.

Не помешает ли мне фреймворк создавать такие модули из-за своего ограниченного функционала.

Может помешать только в случае, если принципы принятые в фреймворке противоречат принципам в вашем проекте. Это возможно только если вы явно выбрали не тот фреймворк. Например: для работы с БД у вас во всю используется Doctrine2, вы выбираете фреймворк yii2 и частично переходите на его ActiveRecord - это приведет к большим проблемам.

Смогу ли я совершенствовать любой модуль фреймворка (например добавление комментариев) под свои нужны не мешая его обновлению.

Да, форкаете фреймворк, публикуете форк в композере и пишите там все что хотите. При обновлении фреймворка - вливаете изменения в свой форк.

Или придется ли мне все переписывать с выходом новой версии, как это приходится делать на CMS типа DLE.

Если у вас зависимость в композере только с последней версией фреймворка - сами себе злобный буратино)). Указывайте фиксированную и обновляйтесь по собственному желанию, либо вовсе не обновляйтесь.

На сколько я буду зависеть от выхода новых версий?

Зависимость от новых версий фреймворка - полностью на вас. Как напишите так и будете зависеть))

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

Проще говоря вы хотите идеальный код, такого не существует, примите за исходную.
От части и по этой причине тоже в зависимостях не принято делать каких-то правок, вы их только подгружаете через композер. Обновления безопасности - как правило это минорные версии, не влияющие на API фреймворка, по этому проблем быть не должно.

Можно ли будет постепенно, не нарушая работу сайта, перенести собственные CMS на фреймворк учитывая то, что в них десятки модулей, собственные админ панели и т.д.

Да

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

Можете, форкаете фреймворк и публикуете его в composer. Правда подобная ситуация возможна для фреймворков крайне редко и скорее сигнализирует о том, что вы выбрали хреновый фреймворк.
Ответ написан
Комментировать
@Silm
Вам проще почитать документацию пары тройки популярных фреймворков, сразу все поймете.

При разработке сайта всегда появляются рутинные задачи. Если пишите сами, то вам надо написать роутинг, надо написать подгрузку классов, MVC, конфигурирование, обертку к БД, обертку к кешу, ..., да даже кучу мелких функций для работы со строками. Либо собрать все это их готовых библиотек.

В фреймворке все это уже собрано, подробно описано и задокументировано. Хороший фреймворк старается минимально обязать вас к чему то и предоставить максимум гибкости и возможностей. Если вам так надо, можете игнорировать большую часть возможностей фреймворка, а можете вместо каких то его частей использовать сторонние или свои.

PHP веб фреймворк - это каркас приложения, набор инструментов, набор деталей, набор стандартов, в какой то мере - рабочее пространство.

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

Самостоятельно бы пришлось изобретать и многие технологии деревообработки. Само собой они бы уступали технологиям проверенным временем и тысячами других мастеров, поэтому изделия получались бы массивными, хрупкими и в целом сомнительного качества.

Ну и так далее.
Ответ написан
Комментировать
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Смогу ли я на фреймворке писать свои модули (любые и любой сложности) для моей CMS. Наверняка не в одном фреймворке нет функции анализа собственного контента (для последующего продвижения) по принципу поисковых роботов. Не помешает ли мне фреймворк создавать такие модули из-за своего ограниченного функционала.

Нет. Вы не совсем поняли для чего созданы фреймворки. Фреймворк - это база (основа) для вашего приложения либо сайта. Формально фреймворк это готовая структура для более удобной разработки. Интегрировать что-либо на фреймворке в готовую корявую CMS на чистом php смысла нет.

Смогу ли я совершенствовать любой модуль фреймворка (например добавление комментариев) под свои нужны не мешая его обновлению (если выйдет новая версия). Или придется ли мне все переписывать с выходом новой версии, как это приходится делать на CMS типа DLE.

Нет нужды переписывать что-то, что уже написано.
К примеру, если использовать только один из крупных фреймворков на рынке (скажем, Laravel) - можно не бояться совместимости. К примеру, если вы начали писать на 5.0 вы сможете обновиться до 5.1 до потерь, а при обновлении до 5.2 вам надо будет поменять всего две строчки кода в одном единственном файле. При выходе глобальных изменений в документации прикладывают инструкцию для безболезненного перехода.

На сколько я буду зависеть от выхода новых версий? Например, я хочу сейчас скачать и дальше уже делать с ним что угодно не боясь, как в предыдущем вопросе, что найдут какую-то уязвимость и снова придется его обновлять и переписывать все свои коды в сотнях файлах php.

Уязвимость не найдут. К примеру, тот же Laravel пережил уже несколько крупных релизов, и разрабатывается пятый год. Защита у него на максимальном уровне, и крупных багов секьюрити с релиза пятой версии не обнаружено. И поверьте мне - не один человек бьются в попытках найти баг в ларавеле, ибо он используется не на одном десятке сайтов. Сайты на нем исчисляются тысячами.

Можно ли будет (искюча вариант, что я скопирую сайт на локалку и год буду переписывать его с нуля на фреймворк) постепенно, не нарушая работу сайта, перенести собственные CMS на фреймворк учитывая то, что в них десятки модулей, собственные админ панели и т.д.

При желании можно все. Но архитектура фреймворков, и того же Laravel такова, что изучив и поняв ее вам захочется все написать с нуля. И, поверьте, это у вас займет очень мало времени (по сравнению со временем, которое вы потратили на написание всего с нуля).

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

Если вы выберите крупного игрока (советую Laravel, опять же) - вам не придется задумываться о его поддержке. Это как минимум open source проект, сотни веб-девелоперов независимо работают над его усовершенствованием, и поддержкой.
И в случае чего вы так же сможете внести вклад, форкнув проект, внеся свои изменения.

Удачи вам.
Ответ написан
Комментировать
nazarpc
@nazarpc
Open Source enthusiast
Фреймворки это наборы инструментов, в случае Symfony, например, это набор совершенно автономных компонентов.
Вы используете эти компоненты для того, чтобы создать нужную вам фукнциональность. То есть в случае типичной CMS функциональность дается какая есть, но настройка весьма ограничена, и порой приходится ковырять ядро. В случае использования фреймворков вы получаете набор более низкоуровневых компонентов, которые просто ускоряют разработку.
По сути это больше похоже на написание с нуля, чем на базе CMS, просто у вас из коробки есть набор готовых запчастей.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Говоря кратко: фреймворк - это муравьиная ферма для Вашего кода.
formic-1.jpg
Да, вы сможете писать модули и развивать проект после того, как фреймворк перестанет развиваться.
Советую Yii или Laravel.
Ответ написан
Ваш ответ на вопрос

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

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