Как писать код для WordPress без классов? Только функциональный ООП?

ReactJS отказался от классов 3-4 года назад, назвав такой подход сложным и дорогим. Вот решил написать плагин для WordPress тоже без классов, но с ОПП.

Это все в тему того что ООП это не только классы. Классы это лишь подтип ООП.

Но 99% программистов уверены что ООП без классов не бывает.

Можно ли писать ООП в PHP & WP только на функциях и хуках?

Классы путают и людей, и машины

Именно так звучит заголовок мотивации в ReactJS, в котором они описывают причины отказа от классов и переход в функции и хуки.

Подробнее тут.

А можно ли так делать в WordPress?

Именно так как у ReactJS & JS на 100% — нельзя из-за ограничений PHP. Но в 90% случаев это реально.

Можно писать ООП, инкапсуляцию, наследование, полиморфизм, переиспользование кода и все ключевые идеи ООП — но без классов, только с функциями.

Отличие лишь в том что у JS есть прототипы и они позволяют делать много чего нельзя в PHP.

Однако я долго сомневался и решил попробовать…

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

В общем код тут https://github.com/ddev-app/feditor

Суть решения очень простая:

  • инкапсуляция на базе неймспейсов
  • наследование через хуки — легко допилить функционал как тебе надо — не трогая основной код
  • переиспользование — легко брать базу и допиливать ее под свои цели

И все это без классов.

ООП есть. Классов нет. Магия!

Плюсы и минусы

Если в JS такое может работать почти везде, то в PHP ограничений больше.

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

Приходится перестроить мозг из SOLID в GRASP — разный фундамент мышления — для многих программистов это сложно.

Но если говорить о плюсах:

  • код пишется быстрее — меньше кода
  • он легче читается — если кто то решит доработать логику под себя
  • меньше зацепленности — такой подход требует использовать хуки — а значит фаталов будет меньше

Источник: https://wpcraft.ru/blog/wordpress-no-classes-oop/

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