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

Про незмінні значення в плагінах WordPress

12

Якщо ви хоч щось працювали – або навіть щось читали – з об’єктно-орієнтованого програмування, то, швидше за все, стикалися з ідеєю незмінності. Це ідея незмінності чогось.

Іноді ви можете мати незмінні значення, а іноді ви можете мати незмінні об’єкти (принаймні після їх створення).

Протилежність immutable (але він був моєю улюбленою черепашкою-ніндзя).

Справа в тому, що чим більше я працюю з об’єктно-орієнтованим кодом, тим менше працюю з незмінними змінними. Звичайно, я буду використовувати константи, як визначено у файлі конфігурації, але ви навряд чи побачите, що я зберігаю значення в класі як const.

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

Звичайно, це одна з тих речей, на які звернув мою увагу друг, коли переглядав мій код.

Працюючи з WordPress, багато хто з нас, ймовірно, знайомі з functions.php і wp-config.php і роллю, яку вони відіграють в основній програмі WordPress.

Так, бувають випадки, коли речі належать до wp-config.php, і так, бувають випадки, коли речі належать до functions.php, але іноді я думаю, що конкретний файл зловживає занадто великою кількістю функцій, значень тощо .

Але як щодо плагінів? Зокрема, як щодо об’єктно-орієнтованих плагінів? Наприклад, скажімо, ви працюєте з API, для якого потрібен ключ API, тому ви не досягнете певного обмеження швидкості з безкоштовною версією програми.

Зазвичай ви можете побачити, що я зберігаю значення в основному класі плагіна як змінну екземпляра, яку можна передавати, або, можливо, воно знаходиться в класі-контейнері, на який я можу посилатися та використовувати його метод get .

Але як щодо використання  властивості const у класі з подальшою передачею через ін’єкцію сетера?

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

<?php

class Main_Plugin {

  const ACME_API_KEY = '123456789';

  public function init() {

    $helper = new Helper_Class();
    $helper->render_acme_data( self::ACME_API_KEY );
  }
}

Далі допоміжний клас може викликати довільний API (я називаю його Canvas, оскільки ми гіпотетично будемо чимось), використовуючи його URL-адресу, і передає ключ API як частину рядка запиту.

<?php

class Helper_Class {

  public function render_acme_data( string $api_key) {

    $canvas_url = 'https://url-for-canvas.com?api_key='. $api_key;
    $canvas = new Canvas( $canvas_url );

    $canvas->draw();
  }
}

Сюди:

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

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

Але якщо ви працюєте з об’єктно-орієнтованим програмуванням і хочете працювати з незмінними значеннями в плагіні WordPress, чи не має сенсу зберігати його в контексті класів, які складають плагін?

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

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