Разработчики часто спорят о фреймворках. И многие думают что 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 это фреймворк, а вы тот кто смог это осилить.

Telegram WordPress

Телеграм канал и чат про WordPress

Будьте в теме и общайтесь про улучшение своих проектов и сайтов на WordPress

Анатолий

Веб разработчик: CMS, LMS, ECM & eCommerce.
Специализация на лучших мировых практиках: WordPress, WooCommerce, NextJS, Strapi, JAMStack ...

https://github.com/uptimizt

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *