Closure::bindTo

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

Closure::bindTo — Дублює замикання із зазначенням пов'язаного об'єкта та області видимості класу

Опис

public Closure::bindTo(?object $newThis, object|string|null $newScope = "static"): ?Closure

Створює та повертає нову анонімну функцію з тим же тілом функції та пов'язаними змінними, але з іншим пов'язаним об'єктом або новою областю видимості класу.

"Пов'язаний об'єкт" визначає значення $this, яке буде доступне в тілі функції, а "область видимості класу" є класом, який визначає до яких protected (захищених) і private (закритих) елементів цього об'єкта буде мати доступ анонімна функція. Якщо точніше, то це ті елементи, начебто анонімна функція була б методом класу, переданого в параметрі newScope

Статичні замикання не можуть мати прив'язаний об'єкт (значення параметра newThis має бути одно null), але ця функція може все одно використовуватися для зміни його області видимості класу.

Даний метод гарантує, що у нестатичного замикання з прив'язаним об'єктом буде задана область видимості та навпаки. Для виконання цієї умови застосовуються такі правила: Для нестатичного замикання із зазначеною областю видимості та з null замість об'єкта буде створено статичне замикання. Для нестатичного замикання з незаданою областю видимості, але із зазначенням об'єкта створюється замикання з невказаною областю видимості.

Зауваження :

Якщо вам необхідно лише дублювати анонімну функцію, то ви можете замість цього використовувати клонування

Список параметрів

newThis

Об'єкт, до якого буде прив'язана передана анонімна функція, або null для від'єднання замикання від поточного об'єкта.

newScope

Область видимості класу, з якою має бути пов'язане замикання чи 'static' для збереження поточної області видимості. Якщо передано об'єкт, то буде використано його клас. Цей параметр визначає видимість protected (захищених) та private (закритих) методів прив'язаного об'єкта. Забороняється передавати цей параметр внутрішній клас (об'єкт класу).

Значення, що повертаються

Повертає новий об'єкт Closureили**null**в случае возникновения ошибки.

Приклади

Приклад #1 ПрикладClosure::bindTo()****

Loading...

Висновок наведеного прикладу буде схожим на:

1
2

Дивіться також