Εργασία με callbacks
Η Nette\Utils\Callback είναι μια στατική κλάση με συναρτήσεις για εργασία με PHP callbacks.
Εγκατάσταση:
composer require nette/utils
Όλα τα παραδείγματα προϋποθέτουν τη δημιουργία ενός ψευδώνυμου:
use Nette\Utils\Callback;
check ($callable, bool $syntax=false): callable
Ελέγχει αν η μεταβλητή $callable
είναι ένα έγκυρο callback. Αλλιώς
ρίχνει Nette\InvalidArgumentException
. Αν το $syntax
είναι true, η συνάρτηση
απλώς επαληθεύει ότι το $callable
έχει τη δομή ενός callback, αλλά δεν
επαληθεύει αν η δεδομένη κλάση ή μέθοδος υπάρχει πραγματικά.
Επιστρέφει το $callable
.
Callback::check('trim'); // δεν ρίχνει εξαίρεση
Callback::check(['NonExistentClass', 'method']); // ρίχνει Nette\InvalidArgumentException
Callback::check(['NonExistentClass', 'method'], true); // δεν ρίχνει εξαίρεση
Callback::check(function () {}); // δεν ρίχνει εξαίρεση
Callback::check(null); // ρίχνει Nette\InvalidArgumentException
toString ($callable): string
Μετατρέπει το PHP callback σε μορφή κειμένου. Η κλάση ή η μέθοδος δεν χρειάζεται να υπάρχει.
Callback::toString('trim'); // 'trim'
Callback::toString(['MyClass', 'method']); // 'MyClass::method'
toReflection ($callable): ReflectionMethod|ReflectionFunction
Επιστρέφει την αντανάκλαση για τη μέθοδο ή τη συνάρτηση στο PHP callback.
$ref = Callback::toReflection('trim');
// $ref είναι ReflectionFunction('trim')
$ref = Callback::toReflection(['MyClass', 'method']);
// $ref είναι ReflectionMethod('MyClass', 'method')
isStatic ($callable): bool
Ελέγχει αν το PHP callback είναι συνάρτηση ή στατική μέθοδος.
Callback::isStatic('trim'); // true
Callback::isStatic(['MyClass', 'method']); // true
Callback::isStatic([$obj, 'method']); // false
Callback::isStatic(function () {}); // false
unwrap (Closure $closure): callable|array
Αποσυμπιέζει αντίστροφα ένα Closure που δημιουργήθηκε με το Closure::fromCallable
.
$closure = Closure::fromCallable(['MyClass', 'method']);
Callback::unwrap($closure); // ['MyClass', 'method']