$ composer require slexx/callback
Класс позволяет вызывать методы других классов, для вызого статичного метода используется синтаксис вида ПространствоИмён\ИмяКласса::имяМетода, для вызова других ПространствоИмён\ИмяКласса->имяМетода.
use Slexx\Callback\Callback;
$callback1 = new Callback('\NameSpace\ClassName::staticMethod');
$callback2 = new Callback('\NameSpace\ClassName->method');Класс ещё умеет работать с callable.
use Slexx\Callback\Callback;
$callback1 = new Callback([$object, 'method']);
$callback2 = new Callback(function($name) {
return 'Hello, ' . $name . '!';
});Для вызова класса есть несколько методов invoke и invokeArgs второй принимает массив аргументов.
use Slexx\Callback\Callback;
$callback = new Callback(function($name) {
return 'Hello, ' . $name . '!';
});
echo $callback->invoke('Alex') . '<br>';
echo $callback->invokeArgs(['Alex']) . '<br>';
echo $callback('Alex');Возвращает: mixed|null|string - Объект класса если в конструктор был переданн массив с объектом, имя класса или null в случае отсуцтвия класса.
Возвращает: null|string - Вернёт :: если метод статичный. Если метод не является статичным ->. В любых других случаях null
Возвращает: object|string - Имя метода или замыкание.
Вызывает метод или функцию с передаваемым массивом аргументов.
$callback = new Callback(function($arg1, $arg2) {
var_dump(func_get_args());
});
$callback->invokeArgs(['arg1', 2]);Вызывает метод или функцию.
$callback = new Callback(function($arg1, $arg2) {
var_dump(func_get_args());
});
$callback->invoke('arg1', 2);Магический метод позволяющий использовать класс как обычное замыкание.
$callback = new Callback(function($arg1, $arg2) {
var_dump(func_get_args());
});
$callback('arg1', 2);