Анонімні функції php в хуках wordpress

Анонімні PHP функції, також відомі як замикання (closures) або лямбда-функції, дозволяють створювати функції не мають певних імен. У WP вони найбільш зручні в якості значень callback-функцій в хуках (фільтрах і події). З'явилися в PHP вони починаючи з версії 5.3, трохи доопрацьовані в 5.4.

Для початку давайте подивимося, як виглядає хук зі звичайною функцією і замиканням:

У першого способу фактично одна перевага: так як функція має ім'я, хук при необхідності можна видалити, використовуючи функцію remove_filter () або remove_action (). Це тим, хто буде користуватися вашим кодом. Тому в плагінах і темах анонімні функції рідкісні гості. А ось якщо хук створений за допомогою замикання, то видалити його вже ніяк не можна.

Переваги анонімних функцій в WP

Короткий синтаксис (зручніше писати).

Більш чисте глобальний простір імен і не потрібно переживати за конфлікти імен функцій.

  • Не потрібно придумувати назви для callback функцій (іноді це забирає чимало часу).
  • Недоліки анонімних функцій в WP

    Неможливо видалити хук, створений на базі анонімної функцій.

    Неможливо використовувати одну й ту ж саму функцію в декількох хуках - для кожного потрібно писати окрему анонімну функцію. приклад:

    Втім, цей недолік неоднозначний, тому що в PHP (з версії 5.3) як і в JS анонімну функцію можна помістити в змінну і потім використовувати змінну як коллбек-функції хука:

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

    use в анонімних функціях

    Ще одна фішка лямбда-функцій - це використання змінних з поточної області видимості, за допомогою оператора use:

    Змінні передаються як значення, але можна передати і посилання на змінну, вказавши :

    Коли варто застосовувати анонімні функції в WordPress?

    Якщо код не призначений для широкого використання.

    Можливість видалення callback функції не потрібна і не буде потрібна.

    Чи не потрібна підтримка PHP версій нижче 5.3.

    Тепер, трохи розібравшись що до чого, можна відповісти на питання, - «Чому в WP не використовуються анонімні функції?» - Тому що код WP повинен бути максимально гнучким, а замикання якраз не про це.

    Creative sites for creative people ★ Digital marketing

    Схожі статті