АрхитектураCMS-агностицизм
CMS-агностицизм
Базовый GraphQL-сервер, на котором построен Gato GraphQL, не зависит от конкретной CMS, поэтому он может работать с любой PHP-CMS или фреймворком (не только с WordPress, но и с Laravel и Symfony).
Чтобы обеспечить независимость от CMS, весь функционал, взаимодействующий с CMS, разделён на 2 отдельных пакета:
- Пакет, независимый от CMS, содержащий весь бизнес-код и контракты для взаимодействия с реализующей CMS, какой бы она ни была (например: posts)
- Пакет, специфичный для CMS, содержащий реализацию контрактов для конкретной CMS (например: posts-wp, реализующий контракты для WordPress)
Таким образом, большая часть кода (около 90%) находится в пакете, независимом от CMS. Чтобы перенести API на другую CMS (например: с WordPress на Laravel), необходимо реализовать только пакет, специфичный для CMS (что составляет около 10% от общего объёма кода).
Минимизация объёма кода, который необходимо переписать заново, и отсутствие дублирования кода между пакетами — вот главные принципы, определяющие, как код разбивается на пакеты.
Next