slexx / callback
允许您以更动态的方式执行回调
v1.0.1
2017-07-29 18:38 UTC
Requires (Dev)
- phpunit/phpunit: ^6.2
This package is auto-updated.
Last update: 2024-09-27 06:27:08 UTC
README
安装
$ 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');
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);