Для какого типа веб проектов используют PHP фреймворки?

Всем привет. Я сейчас более-менее натренировался редактировать готовые темы Вордпресс под заказ, и поскольку мне это стало скучно, - параллельно из любопытства потихоньку разбираюсь в PHP внутренностях Wordpress на Codex. Но поскольку вокруг много шума вокруг PHP фреймворков (а Вордпресс до фреймворка, говорят, никак не дотягивает, поскольку - не MVC), - то я подумал: а тем ли я занимаюсь на перспективу? Какие-такие задачи решают люди с помощью фреймворков, если есть масса готовых CMS? Я вижу в инете сайты-визитки, блоги, соцсети, интернет-магазины (на Woocommerce например). В каком случае CMS становится недостаточно и PHP-шники вынуждены обращаться к фреймворкам? Всю голову себе сломал: болтовни и презентаций в сети много, а конкретно никто про это толком не говорит. Все эти громкие слова - Yii, Zend, Symfony, Laravel, Doctrine. Все эти разговоры про паттерны, рауты, фасады. Честное слово: это не холивара ради - я бы с радостью послушал конкретные доводы, чтобы для себя решить, что мне подучить, чтобы потом в это впрягаться, а не заниматься всю жизнь правкой чужого бутстрапа через less.
  • Вопрос задан
  • 5801 просмотр
Решения вопроса 1
SamDark
@SamDark
Yii2 core team
Фреймворками решаются задачи, которые с использованием CMS решать сильно не оптимально и чаще приходится постоянно бороться со стандартами самой CMS, чем использовать что-то готовое из неё.

Например, для RSS-читалки вроде https://feedly.com/ CMS использовать нет никакого смысла.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 8
KorsaR-ZN
@KorsaR-ZN
CMS - это уже законченный продукт, и на нем будет сложно сделать что-то, кроме того, для чего она разрабатывалась, т.к вы ограниченные ее функционалом и задачами и т.д, вообщем всем, тем для каких целей она создавалась.

Фреймворк - это нечто совершенно другое, это строительный материал, как пластилин и Вы вольны его использовать, как Вам вздумается.
Т.е фрейморк просто набор функций, грубо говоря ядро вашего будущего проекта, обычно включает в себе: кеширование, ORM, шаблонизатор, MVC, di и т.д, на разработку, которых Вам не придется тратить время, и Вы сможете спокойно сконцентрироваться на разработке уже свое продукта, а не его ядра.
Ответ написан
copist
@copist
Empower people to give
CMS расшифровывается как "Система управления контентом". Смотрите, какие обычно модули сайта подразумеваются под управлением контентом:
1. прежде всего текстовый контент - то есть записи блогов, новости, статьи, wiki, описания товаров, объявления
2. работа с пользователями - регистрация, управление правами
3. медиа-материалы к контенту - встроенные картинки или поддержка видео-провайдеров (youtube, vimeo)
4. структуризация контента - категории и теги (или таксономия, если быть точным)
5. комментарии к контенту
6. поиск по контенту и комментариям
7. формы обратной связи и другие способы связи авторов проекта и пользователей
8. встроенная система баннеров
9. статистика
N. и ещё несколько других. Не рекламы ради, а для наглядности: список модулей одной из популярных CMS take.ms/5k7Xd

Так вот, если ты делаешь проект и тебе надо выбрать платформу, то посмотри на эту картинку - все ли нужные тебе для проекта модули перечислены на картинке?
Если твой ответ "да", то твой выбор - это CMS. Нужно сконфигурировать её и покрасить в нужный цвет.
Если ответ "нет", то нужно определить:
* сколько модулей придётся дописать (запрограммировать, адаптировать);
есть ли возможность расширять CMS нужными тебе модулями, например, с помощью системы плагинов;
* достаточно ли документации на эту CMS, чтобы не заблудиться в коде.

Для некоторых проектов окажется, что лучше не использовать CMS, а написать с нуля нужный функционал, а потом уже дописать к нему пару модулей, которые присущи именно CMS. Например твой проект касается деятельности Forex и тебе нужно добавить комментарии к текущему курсу валюты :)

А фреймворки, самописные или популярные, используются потому, что позволяют упростить и организовать программный код, чтобы кодилось компактнее, быстрее и было понятнее для чтения.
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Все, в том числе и эти ваши CMS создано на базе фреймворка. В WP фреймворк - API для работы с данными, плагинами, система хуков. В Joomla есть довольно таки неплохой фреймворк, Drupal частично основан на компонентах Symfony, PHP BB туда же. Ядро любой CMS грубо говоря - фреймворк.
Ответ написан
Комментировать
Wendor
@Wendor
nodejs developer / *nix admin
MVC не серебрянная пуля. Фреймворк не обязан реализовывать MVC.

Фреймворк это набор набор базовых компонентов, для избавления от написания в сотый раз одного и того же кода. Вы можете использовать любой фреймворк, или не пользоваться ими совсем. Главное не переборщите с ними. А то многие нынешние программисты, не могут и обычную авторизацию без любимого фреймворка реализовать.
Ответ написан
viktorvsk
@viktorvsk
CMS - для стандартных и типичных задач.
Фреймворки - для уникальных.

По сути, можно было бы и без фреймворков. Делать каждый раз по уму, 100% для своих собственных нужд и никакого оверхеда. Но жизнь коротка.
Ответ написан
pavel_salauyou
@pavel_salauyou
Symfony2 & Angular разработчик
фреймворк - это базовые компоненты и структура для абсолютно любого приложения на php, платёжную систему например вы на cms не напишите.
Ответ написан
@Haddly Автор вопроса
И снова всем добрый день. - Подводя итог: мне кажется, что на сегодня Yii 1.1.15 - наилучший баланс между 1. востребованностью среди работодателей (в Питере ~30 вакансий Yii, ~20 вакансий Symfony и ~20 вакансий Zend, востребованность остальных ФВ исчезающе мала), 2. обилием документации, 3. наличием большого числа полезных сниппетов / бандлов, 4. сносной поддержкой от PhpStorm и NetBeans, 5. большим количеством реализованных проектов, которые таки надо поддерживать-развивать-переписывать. Опять же, если согласиться, что Symfony и Zend - для больших и средних проектов, а Yii - для средних и малых, - количество заказов (хоть и менее дорогих) на Yii - максимально из всех популярных ныне фреймворков. - Спасибо за ответы и хороших выходных.
Ответ написан
sofcom
@sofcom
DevOps & IT Produce & Digital marketing
Сперва описывай проект, который собираешься делать, все его задачи и функционал. И всегда исходи от того, для кого ты делаешь - от пользователя твоего решения.
Далее смотришь, если большая часть "важного и очень-очень нужного" уже реализована в какой-либо CMS - берешь и используешь CMS, все остальное допишешь по мере необходимости. Если наоборот получается что в CMS много лишнего для твоего проекта и почти или совсем нет того что жизненно необходимо для проекта - берешь фреймворк.
Любой проект на чем-то основывается - система биллинга для работы с данными в виде цифр и важны математические функции. Википедии важны тексты и взаимодействие авторов с контентом, важна история изменения страниц и так далее.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы