Praca z wywołaniami zwrotnymi

Nette\Utils\Callback jest klasą statyczną zawierającą funkcje do pracy z wywołaniami zwrotnymi PHP.

Instalacja:

composer require nette/utils

Wszystkie przykłady zakładają, że alias został utworzony:

use Nette\Utils\Callback;

check($callable, bool $syntax=false): callable

Sprawdza, czy zmienna $callable jest prawidłowym callbackiem. W przeciwnym razie rzuca Nette\InvalidArgumentException. Jeśli $syntax jest prawdziwe, funkcja sprawdza tylko, czy $callable ma strukturę wywołania zwrotnego, ale nie sprawdza, czy klasa lub metoda rzeczywiście istnieje. Zwraca on $callable.

Callback::check('trim'); // nie rzuca wyjątku
Callback::check(['NonExistentClass', 'method']); // throws Nette\InvalidArgumentException
Callback::check(['NonExistentClass', 'method'], true); // nie rzuca wyjątku
Callback::check(function () {}); // nie rzuca wyjątku
Callback::check(null); // throws Nette\InvalidArgumentException

toString($callable): string

Konwertuje wywołanie zwrotne PHP do postaci tekstowej. Klasa lub metoda nie musi istnieć.

Callback::toString('trim');                // 'trim'
Callback::toString(['MyClass', 'method']); // 'MyClass::method'

toReflection($callable): ReflectionMethod|ReflectionFunction

Zwraca odbicie dla metody lub funkcji w wywołaniu zwrotnym PHP.

$ref = Callback::toReflection('trim');
// $ref je ReflectionFunction('trim')

$ref = Callback::toReflection(['MyClass', 'method']);
// $ref je ReflectionMethod('MyClass', 'method')

isStatic($callable): bool

Określa, czy wywołanie zwrotne PHP jest funkcją czy metodą statyczną.

Callback::isStatic('trim');                // true
Callback::isStatic(['MyClass', 'method']); // true
Callback::isStatic([$obj, 'method']);      // false
Callback::isStatic(function () {});        // false

unwrap(Closure $closure): callable|array

Rozpakowuje zamknięcie utworzone za pomocą Closure::fromCallable.

$closure = Closure::fromCallable(['MyClass', 'method']);
Callback::unwrap($closure);     // ['MyClass', 'method']
wersja: 4.0