Разработчики часто спорят о фреймворках. И многие думают что WordPress это не фреймворк. А так ли оно на самом деле?
А что такое вообще этот ваш фреймворк?
Давайте глянем в википедию:
Фре́ймворк (иногда фреймво́рк; англицизм, неологизм от framework — остов, каркас, рама, структура) — программная платформа, определяющая структуру программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта.
Капитан Очевидность
В целом для 50% людей этого уже должно хватить, из определения мы понимаем что да, WP это фреймворк.
Но вот почему 99% PHP кодеров думают что это не так?
WordPress — это не фреймворк, а CMS или даже того хуже — это конструктор!
В целом такое утверждение верно тоже. Да, мы можем использовать WordPress как конструктор. Мы даже можем не писать код. Использовать стратегии NoCode, ZeroCode & LowCode. Это так называемые подходы основанные на конфигурации, когда ты можешь управлять всем проектом онлайн без изменения кода.
Плохо это или хорошо?
- Для бизнеса это хорошо — сокращаются затраты в 10х раз. В 99% случаев.
- Для программистов это плохо — во первых они остаются без работы, во вторых такой системой управлять сильно сложнее, надо уметь думать, а умеют это не многие.
И от сюда становится понятно почему программисты хаят вордпресс — это обычный первобытный рефлекс выживания. Надо быть против того кто отбирает твой хлеб. WP отбирает хлеб у программистов и потому его надо обругать.
Можно было бы так подумать, но там есть нюансы…
Книга «WordPress как Framework»
Есть даже такая книга у много-уважаемого издания, в которой описывается как работать с WP как с фреймворком.
Правда в том что во первых это возможно. А во вторых есть множество ситуаций где это еще и нужно.
Выше я описал что WP часто используют в контексте подхода — ZeroCode. Но программисты чаще понимают подход code-driven.
Важно эти подходы отличать. Они очень разные, даже если в любом случае мы работаем с WP.
Иногда нам удобнее управлять системой через данные и контент, и чтобы с этим мог работать даже новичек, который код в глаза не видел.
Ну а если мы работаем с большими системами, где множество инсталяций и надо ими всеми управлять из 1 точки — и эта точка — код. В этом контексте подход code-driven становится сильно эффективней.
И вот тут типовой WordPress без настроек — может играть в минус. Вы делаете 1 фичу, а потом вам надо скакать по 50 сайтам и везде обновлять опции. Это тяжко. И можно понять программистов которые тут начинают рыдать.
Еще минус — когда кто то что то поменял в коде — мы это видим по истории, а если поменяли в БД — увидеть историю не всегда получается. Ищи потом причины проблемы.
Но это все лишь проблема отсутствия знаний. Важно уметь работать с WordPress как с ZeroCode и data драйвен — если у вас например 1 проект. Это очень эффективно. Но если у вас на 1 код посажено 100 проектов — важно уметь работать с WordPress как с фреймворком. И это тоже важно. Но умеют не многие.
Книга в помощь.
А вот еще PHPStorm
Тоже там разработчики думают что WordPress это фреймворк. Потому что включили его в соответствующий раздел.
Совпадение? …
Все фигня. ВордПресс не фреймворк, потому что он кривой
Есть и такое утверждение. Вот программисты они же умные, они выучили тучу теорий про MVC, SOLID, разные там паттерны знают. Особенно те про которые часто пишут в этих ваших Интернетах.
А вордпресс он не такой! Я вот привык к Ларавел/Симфони/Zend (нужное подчеркнуть), а тут все не так кака тама!
В общем такое бывает у программистов которые болеют синдромом Утенка.
Смысл в том что большинство теорий, книг и статей они про классический ООП.
А у WordPress применяется ООП компонентного типа, да еще хорошо приправлено механиками из AOP & EDA. Подробнее тут.
В базовых фреймворках типа Laravel или Symfony такие штуки применяются редко, потому что обычно там все заточено мод микро сервисы и минимальный функционал.
Увидеть там архитектуру заточенные под сложные задачи и большой функуционал — это редкость. Речь идет про проекты где работают от 100 разработчиков.
Для тех кто такого не видал можно глянуть FreeScout
- ребята реализовали AOP через Laravel Modules
- сделали EDA через Eventy
Им почти удалось повторить WordPress на базе Laravel.
Но это исключение. В целом 99% кодеров никогда такого даже близко не видели.
А в WordPress это все и сразу и в большом количестве.
Надо понимать что у большинства не окрепших умов взрываются мозги и первичный рефлекс начинает им говорить что с WP что то не так. Он не фреймворк! ))
Однако доля правды тоже есть
Фреймворки от природы заточены под код, и ими движут желания программистов — чтобы код был красивый, чтобы можно было в пару тыков авто тесты написать, чтобы миграции легко строились, очереди в фоне работали понятно и прочее.
В WP это все тоже можно делать, оно в том или ином виде практикуется, но вот четких понятных решений нет. И каждый крупный проект изобретает тут свои решения.
Однако это не причина говорить что вордпресс это не фреймворк. Правильнее говорить так что это фреймворк заточенный под нужды CMS без кода, и каких то готовых инструментов под узкие задачи у него нет. Придется изобретать самим. Для многих это проблема. Потому есть масса случаев когда действительно лучше брать что то типа Ларавел или Симфони, потому что в тех фреймворках есть ряд инструментов под задачи типа узких горлышек.
Итого
В общем фреймворк оно или не фреймворк — это не вопрос про вордпресс. Это вопрос про то кто и как его использует.
Можно использовать как конструктор — и в целом не заморачиваться. Не надо знать архитектуру, паттерны кода и прочие умные слова — тык тык и работаем.
Можно использовать как фреймворк — но тогда надо знать что такое OOP 3х типов, что такое AOP? EDA? Чем отличается SOLID от GRASP?
А еще надо знать как правильно делать авто тесты.
И вот тогда можно будет сказать что WordPress это фреймворк, а вы тот кто смог это осилить.