✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Использование шаблона реестра в WordPress

22

У меня было несколько разговоров с разными друзьями и другими пользователями Twitter о понятии глобальных переменных в языках программирования. Для тех, кто новичок в программировании или кто не уверен, чем они плохи:

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

Это не значит, что они бесполезны, но если вы заинтересованы в объектно-ориентированном программировании (особенно в среде WordPress, где вы собираетесь использовать PHP), важно понимать некоторые лучшие альтернативы. чем глобальные переменные.

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

Шаблон реестра в WordPress

Во-первых, обратите внимание, что шаблоны проектирования превосходят любой конкретный шаблон. Пока язык предлагает концепции объектов (или даже абстракций), шаблон можно реализовать.

Но зачем использовать это?

Использование шаблона реестра в WordPress

Фото Сэмюэля Зеллера на Unsplash

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

Реализация шаблона

С учетом сказанного, как мы можем реализовать шаблон реестра в WordPress, а затем использовать его в нашей работе? Давайте сначала рассмотрим базовую структуру шаблона :

Обратите внимание, что его реализация довольно проста:

  1. Класс содержит один массив как частное свойство.
  2. Данные добавляются в массив с определенным идентификатором.
  3. Данные могут быть извлечены из шаблона с идентификатором.

Вы могли бы даже поднять этот конкретный шаблон на следующий уровень, если бы он принимал только класс определенного типа (например, AbstractEvent), а затем автоматически вызывал бы функцию для класса всякий раз, когда он передается (или извлекается) из реестра.

Но это становится более сложной реализацией, которую я хотел бы для этого поста.

Настройка реестра

Из-за характера системы крючков WordPress существует особый способ настройки реестра, а затем регистрация в WordPress.

Допустим, вы работаете с плагином. В загрузочном файле плагина сделайте что-то вроде этого:

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

Использование реестра

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

Оттуда вы можете получить объекты, которые вы сохранили в реестре:

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

Несколько слов о тестируемости

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

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

Источник записи: tommcfarlin.com

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