slexx/callback

允许您以更动态的方式执行回调

v1.0.1 2017-07-29 18:38 UTC

This package is auto-updated.

Last update: 2024-09-27 06:27:08 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

安装

$ 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 . '!';
});

调用类有几个方法 invokeinvokeArgs,第二个方法接受一个参数数组。

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

API

getClass

返回: mixed|null|string - 如果构造函数传递了一个包含对象的数组,则返回对象类,如果传递了类名,则返回类名,如果没有类,则返回 null.

getType

返回: null|string - 如果是静态方法,则返回 ::。如果不是静态方法,则返回 ->。在其他情况下返回 null.

getMethod

返回: object|string - 方法名或闭包。

invokeArgs

使用传递的参数数组调用方法或函数。

$callback = new Callback(function($arg1, $arg2) {
    var_dump(func_get_args());
});
$callback->invokeArgs(['arg1', 2]);

invoke

调用方法或函数。

$callback = new Callback(function($arg1, $arg2) {
    var_dump(func_get_args());
});
$callback->invoke('arg1', 2);

__invoke

魔法方法,允许将类用作普通闭包。

$callback = new Callback(function($arg1, $arg2) {
    var_dump(func_get_args());
});
$callback('arg1', 2);