$ 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);