Інтерфейси плагінів WordPress: робота з активами
Однією з переваг роботи з об’єктно-орієнтованим програмуванням є можливість визначати інтерфейси, щоб класи, які реалізують ці інтерфейси, мали строгий набір функцій, які зазначені класи повинні реалізувати.
У всякому разі, це визначення інтерфейсу класу:
Інтерфейс — це контракт, що визначає набір методів, полів і властивостей, які будуть доступні для будь-якого реалізованого об’єкта
Але як це може виглядати, якщо ми прагнемо створити рішення з простором імен для включення інтерфейсів плагінів WordPress (або інтерфейсу) для класу, який можна використовувати для постановки в чергу таблиць стилів або файлів JavaScript?
Інтерфейси плагінів WordPress: ресурси
Для цілей цієї публікації припустимо, що ми визначаємо інтерфейс, який використовуватиметься в області адміністрування WordPress. Тобто ми створимо інтерфейс, який використовуватиметься для постановки таблиць стилів і файлів JavaScript у чергу.
Нам потрібно включити наступне:
- простір імен, який можна використовувати в усьому проекті,
- функція для ініціалізації класу,
- функція для фактичного постановки активів у чергу.
І оскільки це достатньо загальне, щоб його можна було використовувати для JavaScript і таблиць стилів, я вирішив просто назвати його Asset.
Кінцевий результат може виглядати приблизно так :
<?php
namespace AcmeAdminInterfaces;
interface Asset {
public function init();
public function enqueue();
}
Далі нам потрібно фактично реалізувати інтерфейс за допомогою класу. Це має бути відносно простим, оскільки ми встановили методи, які повинні бути реалізовані.
Однак зауважте, що я надаю кілька властивостей, які встановлюються в конструкторі класу. Вони є специфічними для цього класу та спрощують фактичне розміщення файлу в черзі.
<?php
namespace AcmeAdmin;
use AcmeAdminInterfaces;
class JavaScript_Assets implements InterfacesAsset {
private $assets_dir;
private $js_dir;
public function __construct() {
$this->assets_dir = trailingslashit(
plugin_dir_url( __FILE__ ). 'assets'
);
$this->js_dir = trailingslashit( $this->assets_dir. 'js' );
}
public function init() {
add_action(
'admin_enqueue_scripts',
array( $this, 'enqueue') );
}
public function enqueue() {
wp_enqueue_script(
'toggle-admin-notices',
$this->js_dir. 'admin.js',
array( 'jquery' ),
false
);
}
}
Кілька речей, які слід зазначити про код вище:
- він використовує ключове слово use, щоб PHP знав, що ми працюватимемо з інтерфейсом Asset ,
- Я додав перед назвою JavaScript, щоб було зрозуміло, з яким типом ресурсу я працюю.
Нарешті, щоб створити екземпляр класу, який реалізує інтерфейс, ви просто зробите це :
<?php
$assets = new AdminJavaScript_Assets();
$assets->init();
Звичайно, цей конкретний приклад простий, і я залишив звичайні коментарі до коду, але це загалом для зручності читання. Якщо ви хочете побачити щось подібне в дії, перегляньте вихідний код для
Якщо ви хочете побачити щось подібне в дії, перегляньте вихідний код цього конкретного плагіна.