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);
});
Version: 4.x