✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Використання реєстру, передплатників і служб у WordPress

9

TL; DR: Я вважаю використання реєстру, підписників і служб дуже корисним під час створення плагінів і утиліт для WordPress, орієнтованих на серверну частину. У цій публікації описано, як це зробити.


Після багаторічної роботи з шаблонами проектування, об’єктно-орієнтованим програмуванням і WordPress обов’язково з’являться загальні способи вирішення проблем.

Ось як ми отримали об’єктно-орієнтовані шаблони проектування для початку, тому, можливо, це варіація, орієнтована на WordPress.

Хоча я писав про такі речі, як реєстри, у попередніх статтях (і навіть не таких старих ), ніколи не буде поганою ідеєю повернутися до тієї самої теми, особливо коли є що продовжити додати до попереднього.

Реєстр, передплатники та послуги

Усе, що описано нижче, слід розуміти в контексті плагіна WordPress. Тобто, це не призначено для читання як спосіб роботи з будь-якими іншими фреймворками, мовами, програмами або під час використання з будь-якими іншими шаблонами.

Пам’ятайте про це, читаючи це.


У будь-якому разі загальна ідея поєднання цих типів об’єктів така:

  1. Реєстр обробляє всіх підписників,
  2. Підписники відстежують хуки в WordPress (ті, що існують, або навіть спеціальні хуки),
  3. Служби виконують фактичну роботу щоразу, коли підписник надсилає їх.

Метою є наявність єдиного місця для реєстрації класів, відповідальних за відправлення роботи. Це воно.

Крім того, це також полегшує розділення речей, тому якщо ви хочете перевірити свої служби окремо, це набагато простіше, оскільки вони не обов’язково тісно пов’язані з WordPress. І якщо вони є, то ви можете познущатися над даними, які потрібно передати в певну функцію, а потім оцінити результат.

Однак це стаття не про тестування, тому повернемося до фактичних класів.

Реєстр

За визначенням, метою реєстру є відстеження речей. Коли справа доходить до впровадження цього шаблону в WordPress, ідея полягає в тому, що реєстр може відстежувати підписників (які я визначу пізніше в цій статті).

Використання реєстру, передплатників і служб у WordPress

Фото Денні Мюллера на Unsplash

Крім того, ідея полягає в тому, що коли настане час, який, ймовірно, буде іншим, незважаючи на структуру вашого плагіна, усі передплатники стануть екземплярами. Однак до цього моменту ви, швидше за все, захочете зробити це на початку життєвого циклу WordPress.

Тим не менш, ось приклад коду для реєстрації підписників:

private $subscribers = [ AssetSubscriber::class, // ... DeletedUserSubscriber::class, ];

Далі, ось функція для створення екземплярів передплатників.

Ці блоки можуть бути частиною однієї функції або бути окремими залежно від ваших потреб.

Підписники

Як уже згадувалося, передплатники – це спосіб:

  1. Слухайте певний хук у WordPress
  2. Надішліть службу для виконання будь-якої роботи, призначеної для даного хука.

Тож припустімо на мить, що ви хочете щось зробити щоразу, коли користувача буде видалено. Ви хочете створити екземпляр служби через абонента щоразу, коли трапляється цей перехоплення.

Використання реєстру, передплатників і служб у WordPress

Фотографія Лі Кемпбелла на Unsplash

Як приклад:

Зауважте, що підписник знає про службу (хоча він не залежить від неї, оскільки є просто посередником між WordPress і службою) і вказує прив’язку послуги, що її створює.

Послуги

Нарешті, служби — це об’єкти, які виконують всю важку роботу в плагіні. Це означає, що якщо їм потрібно читати або писати в базу даних, файлову систему, мережу, обробляти дані тощо, все це відбувається в їх контексті.

Використання реєстру, передплатників і служб у WordPress

Фотографія Еріка Макліна  на Unsplash

Вони можуть знати про інші класи, а можуть і ні. Вони можуть реалізовувати інтерфейс чи абстрактний клас чи ні. Це справді виходить за рамки цієї публікації. Але справа в тому, що, використовуючи хук вище як приклад, якщо ви хочете щось зробити, коли користувача видалено, ви робите це в службі.

Наприклад:

class DeletedUserService { public function add(string $hook) { add_action($hook, [$this, 'deletedUser'], 99, 1); } public function deletedUser(int $userId) { $user = get_userdata($userId); if (false === $user) { return; } // Do work with the user that's being deleted. } }

І на цьому все закінчилося. Після запуску служби керування буде повернено до WordPress, і програма продовжить виконання у звичайному режимі.

Всі разом зараз

Якщо припустити, що у вас є файл початкового завантаження для вашого плагіна, який більшість має, оскільки саме тут визначається необхідний плагін, потрібен автозавантажувач, і відбувається створення екземпляра самого плагіна.

Джерело запису: tommcfarlin.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі