Плагины и темы из репозитория WordPress.org устанавливаются как отдельные пакеты; они должны содержать весь код, файлы и зависимости, необходимые для правильной работы. Поскольку нет централизованной системы с обзором всех зависимостей, используемых в различных плагинах и темах WordPress, всем им необходимо реализовать свою собственную систему безопасности.
При создании чего-либо никогда не бывает эффективно изобретать велосипед. В программировании люди приняли эту концепцию и создали библиотеку инструментов на многих языках. Мы называем эти инструменты «зависимостями». Инструмент, который предоставляет библиотеку зависимостей, релевантных в этом контексте, — это Composer, менеджер зависимостей для PHP.
Как упоминалось ранее, WordPress не имеет централизованного способа управления этими зависимостями, что может привести к проблемам. Чтобы эффективно управлять зависимостями и позволить программистам контролировать, какие функции они используют, у зависимостей есть номер версии. Composer позволяет вам настроить, с каким номером версии или диапазоном номеров версий совместим ваш код. Он также гарантирует, что он устанавливает и использует версию этой зависимости, которая соответствует этому ограничению версии.
к содержанию ↑Представьте себе сайт WordPress с двумя плагинами; «Плагин A» и «Плагин B». Оба они используют зависимость «большая / зависимость». «Плагин A» требует версии v1.0, «плагин B» намного новее и требует версии v3.0. Это приведет к проблемам, если функции, классы или константы были определены в обеих версиях, но имеют разную функциональность. В PHP вы можете определить только класс и, таким образом, загрузить только одну версию. Ваш код ожидает класс из версии v1.0, но из-за порядка загрузки v3.0 может быть первым активным классом.
к содержанию ↑Есть два пути решения этой проблемы:
CustomPrefixSomePackage
вместо SomePackage
).Первое решение требует некоторых изменений в основном коде WordPress и поэтому нереально для большой группы текущих пользователей. Некоторые инструменты помогут вам установить и настроить установку WordPress с помощью Composer для управления всеми зависимостями (плагины, темы, инструменты, которые вы хотите использовать для своего пользовательского кода). Мы настоятельно рекомендуем изучить доступные в настоящее время параметры и использовать единое централизованное место для управления зависимостями. Это даст вам полный контроль и понимание кода, который вы используете для запуска своего сайта.
Второе решение — преобразование зависимостей, которые вы используете, в вариант, который вы используете в своем коде, — это часть, о которой я подробно расскажу в этом посте.
Реализация в WP Post Rating полностью совместима с обоими путями решения и дает накладные расходы.
к содержанию ↑Мы поставляем небольшую коллекцию собственных плагинов в качестве внешних зависимостей внутри нашего плагина, например, пакет мотивации перевода. Количество плагинов, которые используют эти пакеты, минимально, поскольку они не актуальны для большинства плагинов. Несмотря на это, даже они давали нам некоторые проблемы в прошлом, потому что две (несовместимые) версии этих пакетов присутствовали в двух разных плагинах, активных в системе.
WordPress увеличил минимальную версию PHP с 5.2 до 5.6 в выпуске WordPress 5.2. Это открывает мир библиотек и инструментов, которые мы можем и хотим использовать в нашем программном обеспечении. Инструменты и библиотеки, которые были стандартным решением для проектов, на которые не накладывалось ограничение PHP 5.2.
Возможность использовать инструменты, написанные для PHP 5.6, позволяет нам реализовывать функциональные возможности с использованием стандартизированных методов, таких как ORM, миграции баз данных, внедрение зависимостей и многое другое. Это улучшит качество кода, читаемость и производительность.
По мере того, как все больше плагинов и тем (надеюсь) будут использовать более современный и стандартизированный код, чтобы полагаться на свой код, вероятность наличия несовместимых версий этих зависимостей резко возрастет.
к содержанию ↑Реализация имеет три различных окружения, на которые она влияет:
Обратите внимание, что для работы этой функции вам потребуется PHP 5.6. Поскольку WordPress только недавно увеличил минимальную версию до PHP 5.6, настоятельно рекомендуется обернуть код, использующий эти зависимости, в проверку версии PHP.
Мы добавили необходимые нам зависимости в нашу конфигурацию Composer:
Это позволяет Composer устанавливать их и управлять версиями, которые необходимо установить. Вам не нужен префикс для этой установки, потому что мы управляем версиями глобально на сайте.
Чтобы подготовить пакет, который будет выпущен на WordPress.org, мы создаем артефакт плагина, который развертывается в репозитории WordPress.
Мы используем термин «артефакт» для обозначения набора файлов, которые необходимы для использования плагина. Эта коллекция отличается от набора файлов, необходимых для разработки плагина.
Для JavaScript это означает уменьшенные версии файлов, для CSS это означает скомпилированные версии вместо исходных файлов (Sass). Для зависимостей это означает вариант с уникальным именем для всех классов, функций и констант в этих зависимостях.
Используемые инструменты:
PHP Scoper предоставляет возможность выполнять модификации кода. Он специально создан для «префикса всех пространств имен PHP в файле / каталоге, чтобы изолировать код, связанный в PHAR».
PHAR — это исполняемые файлы PHP, которые также живут в экосистеме, где нет глобальной системы управления зависимостями.
PHP Scoper поможет вам со следующими задачами:
Создание артефакта состоит из следующих шагов:
artifact
)vendor_prefixed
.vendor_prefixed
и vendor
в артефакт.Мы собираемся добавить префиксы к любым классам, интерфейсам и константам, с которыми поставляются зависимости, за исключением PSR-интерфейсов. Это позволит разработчикам сайтов, тем и плагинов легко интегрироваться со своими индивидуальными интеграциями на основе отраслевых стандартов. В настоящее время мы используем только интерфейс логгера PSR-3, в будущем мы можем использовать другие интерфейсы.
к содержанию ↑Во время разработки мы хотим иметь возможность использовать зависимость, используемую при установке WordPress.org, а также при установке плагина Composer.
Чтобы он работал в обеих ситуациях (с Composer и без него), мы динамически добавляем псевдонимы PHP для классов и интерфейсов, которые начинаются с определенного префикса. Это позволяет нам всегда ссылаться на версию класса с префиксом в коде, даже если загружен вариант без префикса (через Composer).
Плагин рейтинга создан автором этого блога. Буду очень признателен, если вы сможете его поддержать (ссылка)p.s. Если статья была полезной и вас переполняет чувство благодарности, можете поддержать меня долларом на патреоне
Получение первого заказа на фрилансе может быть вызовом, особенно для новичков, которые еще не имеют…
Разработка сайтов и веб-приложений стала в наше время неизбежной потребностью. Тем не менее, существует несколько способов…
Компании и специалисты по маркетингу тратят много времени и денег на изучение языка поисковых систем,…
Адаптивные изображения - это набор методов, используемых для загрузки правильного изображения в зависимости от разрешения…
Политика конфиденциальности - это документ, в котором подробно описывается, как компания или организация обрабатывает любую…
В современном мире много специалистов занятых поддержанием работы сайтов, и довольно часто многих из них…