Суть архитектуры: разница между WordPress & Laravel

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

Оставим споры о том что WordPress это не фреймворк – для джунов и детей.

Laravel явно побеждает среди всех фреймворков и визуализация этого процесса тут: https://t.me/wpcraft/69

Но почему WordPress уделывает Laravel с большим отрывом на открытом рынке в абсолютных значениях типа количество веб сайтов и доля рынка?

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

WordPress

WordPress – это CMS (система управления контентом), которая используется для создания сайтов, магазинов, агрегаторов и блогов. Она имеет множество плагинов и тем, которые позволяют расширять функциональность и изменять внешний вид сайта. WordPress использует язык PHP и базу данных MySQL.

Архитектура WordPress основана на шаблонизаторе, который используется для создания страниц сайта. Каждый шаблон имеет свой уникальный файл, который содержит HTML-код и PHP-код для динамической генерации содержимого. Это позволяет легко изменять внешний вид сайта.

Там еще есть специфика про переиспользование кода и событийно ориентированную архитектуру, но про это далее.

Laravel

Laravel – это фреймворк для веб-разработки, использующий язык PHP. Он имеет множество инструментов и библиотек для создания веб-приложений. Laravel использует паттерн MVC (Model-View-Controller), который разделяет приложение на три части: модель, представление и контроллер.

Архитектура Laravel основана на маршрутизаторе, который определяет, какой контроллер должен быть вызван для каждого запроса. Контроллер затем обрабатывает запрос и возвращает данные в представление. Представление содержит HTML-код, или JSOM и может использовать шаблоны для генерации динамического содержимого.

Можно делать сложные высоконагруженные проекты с хорошей оптимизацией.

Побеждает дружба и конкуренция

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

В итоге, выбор между WordPress и Laravel зависит от цели вашего проекта и требований к функциональности и производительности. Оба фреймворка имеют свои места в веб-разработке и могут быть мощным инструментом для достижения ваших целей.

В целом успех проекта зависит лишь от инженерного уровня команды, а не от платформы. Крутой проект можно сделать как на Laravel так и на WordPress. Важный аспект – у разработчиков руки должны рости из плеч. Беда обычно начинается там где у разработчиков руки растут из других мест. И так бывает что с WordPress, что с Laravel.

А теперь копнем сильно глубже

Разница между WordPress & Laravel составляет размер длиною в вечность умноженную на пропасть. Отличия между ними сильно больше чем между Python & Basic. Хотя язык вроде бы один – PHP.

Сводбная таблица выглядит примерно так:

WP vs Laravel WordPress Laravel
Структура Холархия – холоны и модули как компоненты Иерархия – экземпляры классов как компоненты
Наследование и переиспользование кода Через событийно ориентированную архитектуру – EDA Через иерархию классов PHP с наследованием
Базовые паттерны GRASP SOLID
Фундаментальные отличия архитектуры WordPress & Laravel

Для примера перейти с WordPress на Django сильно проще чем на Laravel – хотя вроде бы есть смена языка.

Также с Laravel сильно проще перейти на Flask чем на WordPress – ситуация та же.

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

Холархия vs Иерархия

WordPress базируется на структурах типа холархии – где составляющие это холоны.

Возьмите 100 программистов и спросите их – чем холархия отличается от иерархии? 99% не смогут ответить. Ума не хватит. И это та самая причина по которой 99% программистов не любят WordPress – у них ума не хватает вникнуть в столь глубокие структурные понятия.

Laravel напротив – это чисто иерархическая структура – очень понятна для большинства программистов – достаточно даже базового образования. Не нужны какие то серьезные умственные способности.

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

Но при наличии желания – разницу можно понять за 1-2 года практики с холархическими архитектурами. WordPress он не один такой, есть похожие системы – Django, FreeScout, ReactJS и в целом почти любые модульные платформы.

EDA vs COP

Далее разберем разницу наследования и переиспользования кода как основы архитектуры:

  • WordPress – это EDA – событийно ориентированная архитектура – наследование через диспетчер хуков
  • Laravel – это COP – иерархия классов с наследованием через расширение классов

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

Что лучше? Это вопрос вкуса и очень спорно.

Что эффективней? Ну WordPress явно в 1000 раз обогнал Laravel на рынке веб сайтов. Совпадение?

GRASP vs SOLID

Да, если сегодня глянуть на 99% вакансий по разработке – везде говорят про SOLID. Как будто это высшая истина. На самом деле это глубочайшее заблуждение.

Как показывает опыт и практика последних лет – на рынке побеждают продукты с архитектурой где в базе используется GRASP.

SOLID – это хорошая архитектура чтобы обосновать почему завязывание шнурков должно занимать 2 недели. И потому программисты топят за эту утопию.

Как примеры продуктов с GRASP: все тот же WordPress, Django, ReactJS etc.

Примеры чуть ближе к коду:

  • если я пишу на Laravel то я должен роут написать в 1 файл, стили в другой, контроллер в третий, шаблон в четвертый – вот у меня уже 4 файла открыты даже если я пишу простую логику. Это SOLID. Усложнение без причины – признак дурачины.
  • если я пишу на WordPress или ReactJS – я могу написать хуки, логику, роуты, шаблон в 1 файл или 1 папку – это GRASP. Тут файл или папка ведут себя как холоны – как целое и как часть – одновременно. В мире ReactJS это еще называется Single File Components (SFCs).

Суть в том что GRASP – более эффективный набор паттернов, который в разы лучше позволяет добиться переиспользования кода. Одна из причин победы WordPress на рынке веб сайтов.

SOLID – лучше подходит для программистов начального уровня – там где нужно нанять много разработчиков. Толковых много не бывает. Потому нужно набирать тех кто есть – и SOLID это как раз хороший подход для таких проектов. В этом подходе меньше свободы и больше защиты от дураков.

Еще ряд мыслей в тему

Большая часть софта – это слабые архитектуры, построенные грубой силой и тысячами работ

Тут хорошо заходит цитата Алана Кея:

Алан Кей писал об этом как раз когда продвигал свою идею ООП без классов, с обменом сообщениями и модулями. Можно сказать что он как раз ставил на EDA & GRASP. А все что про SOLID & COP – это он называл отсталыми подходами которые сильно увеличивали затраты на разработку.

Под объектами в ООП он понимал не экземпляры классов как этому учат в школах, а модули системы.

В этом плане можно сказать что WordPress как раз реализовал именно эти идеи лучше чем аналоги. И вероятно это основная причина почему WordPress обходит конкурентов вот уже 15 лет подряд.

WordPress слишком свободен – это плюс и минус одновременно

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

Формула джаза: это музыка + свобода.

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

Джаз не одинок как вид искусства, который позволяет это, он существует в трехмерном пространстве наряду со многими другими жанрами и незвуковыми формами выражения.

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

Мэтт Мулленвег – основатель WordPress

Источник: https://wp-digest.com/articles/pochemu-dzhaz/

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

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

Laravel – это красота с точки зрения программистов

Мне как программисту Laravel дико нравится и многие его идеи я стараюсь применять в WordPress. Будь то его модели, фасады или DI. Все это очень удобно и с таким работать одно удовольствие.

Однако я понимаю что вся эта красота меркнет в сравнении с силой переиспользования кода в WordPress. Потому большинство простых проектов я конечно же делаю на WP.

С другой стороны если мне нужно сделать какой то микросервис, интеграцию, так чтобы оно работало с большой таблицей, где нужны миграции, асинхронные процессы и прочие вещи про HighLoad & BigData – тут я вероятно лучше возьму Laravel.

Вместо Laravel я могу взять Flask на Python или NodeJS с допами типа Fastify или Strapi. Все эти штуки как правило лучше себя показывают в ситуации когда нужно выходить в микросервисы.

Тут выбор зависит не столько от самого фреймворка, сколько от наличия свободных разработчиков. Если есть много свободных PHP – берем Laravel. Если много свободных JS – берем Fastify или Strapi. Если есть питонисты – берем Flask.

В таких кейсах выбор обычно зависит от наличия свободных рук.

Заключение

В этой статье мы рассмотрели основные отличия между WordPress и Laravel в архитектуре. WordPress имеет простую архитектуру на основе GRASP, EDA, а Laravel использует паттерн MVC и SOLID. Выбор между ними зависит от цели вашего проекта и требований к функциональности и производительности. Оба фреймворка могут быть мощным инструментом для достижения ваших целей в веб-разработке.

Плохому танцору яица мешают. Потому 99% споров о том что плохо или хорошо – это разговор о уровне инженерной культуры команды. При наличии мозгов в команде – собрать крутой проект можно на любой из этих платформ. Главное понимать особенности архитектуры, проекта и той команды, которая будет делать проект.

Telegram WordPress

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

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

Источник: https://wpcraft.ru/blog/architecture-wordpress-vs-laravel/

%d такие блоггеры, как: