Callback-Funktionen
Nette\Utils\Callback ist eine statische Klasse mit Funktionen für die Arbeit mit PHP-Callbacks.
Installation:
composer require nette/utils
Alle Beispiele setzen voraus, dass dieser Klassen-Alias definiert ist:
use Nette\Utils\Callback;
check ($callable, bool $syntax=false): callable
Prüft, ob $callable ein gültiger PHP-Callback ist. Andernfalls wirft die Methode eine
Nette\InvalidArgumentException. Ist $syntax auf true gesetzt, prüft die Funktion nur, ob
$callable die gültige Struktur eines Callbacks hat, nicht aber, ob die Klasse oder Methode tatsächlich existiert.
Gibt das ursprüngliche $callable zurück.
Callback::check('trim'); // keine Exception
Callback::check(['NonExistentClass', 'method']); // wirft Nette\InvalidArgumentException
Callback::check(['NonExistentClass', 'method'], true); // keine Exception
Callback::check(function () {}); // keine Exception
Callback::check(null); // wirft Nette\InvalidArgumentException
toString (callable $callable): string
Wandelt einen PHP-Callback in seine textuelle Darstellung um. Die Klasse oder Methode muss nicht existieren.
Callback::toString('trim'); // 'trim'
Callback::toString(['MyClass', 'method']); // 'MyClass::method'
toReflection (callable $callable): \ReflectionMethod|\ReflectionFunction
Gibt die Reflection der Methode oder Funktion zurück, die im PHP-Callback verwendet wird. Wirft eine
\ReflectionException, wenn die referenzierte Methode oder Funktion nicht existiert.
$ref = Callback::toReflection('trim');
// $ref ist ReflectionFunction('trim')
$ref = Callback::toReflection(['MyClass', 'method']);
// $ref ist ReflectionMethod('MyClass', 'method')
isStatic (callable $callable): bool
Prüft, ob der PHP-Callback eine globale Funktion oder eine statische Methode ist.
Callback::isStatic('trim'); // true
Callback::isStatic(['MyClass', 'method']); // true
Callback::isStatic([$obj, 'method']); // false
Callback::isStatic(function () {}); // false
unwrap (\Closure $closure): callable|array
Packt eine mit Closure::fromCallable() erzeugte Closure wieder aus. Gibt das ursprüngliche Callable als Array
oder String zurück.
$closure = Closure::fromCallable(['MyClass', 'method']);
Callback::unwrap($closure); // ['MyClass', 'method']
invokeSafe (string $function, array $args, callable $onError): mixed
Ruft die native PHP-Funktion $function mit den Argumenten $args auf und fängt dabei alle Warnungen
und Fehler, die sie auslöst, mit einem eigenen Handler ab. So können Sie auf Probleme reagieren, die native Funktionen
üblicherweise nur als Warnung melden. Der Callback $onError bekommt zwei Argumente: die Fehlermeldung (ohne das
führende Präfix function():) und ihren Schweregrad. Gibt er false zurück, wird der Fehler an den
üblichen Fehler-Handler weitergereicht.
$result = Callback::invokeSafe('file_get_contents', ['file.txt'], function (string $message, int $severity) {
throw new Exception($message);
});