- 89
- 0
$payment = EasyWeChat::payment();
try {
$payment->handlePaidNotify(function ($message, $fail) {
$fail('xxx');
});
} catch (EasyWeChat\Kernel\Exceptions\Exception $e) {
Log::warning('WeChatPay Notify Exception',
['code' => $e->getCode(), 'message' => $e->getMessage()]
);
}
这里为啥$fail能这样用,追了下源码
namespace EasyWeChat\Payment\Notify;
use Closure;
class Paid extends Handler
{
/**
* @param \Closure $closure
*
* @return \Symfony\Component\HttpFoundation\Response
*
* @throws \EasyWeChat\Kernel\Exceptions\Exception
*/
public function handle(Closure $closure)
{
$this->strict(
\call_user_func($closure, $this->getMessage(), [$this, 'fail'])
);
return $this->toResponse();
}
}
//toresponese
public function toResponse(): Response
{
$base = [
'return_code' => is_null($this->fail) ? static::SUCCESS : static::FAIL,
'return_msg' => $this->fail,
];
$attributes = array_merge($base, $this->attributes);
if ($this->sign) {
$attributes['sign'] = Support\generate_sign($attributes, $this->app->getKey());
}
return new Response(XML::build($attributes));
}
//strict
protected function strict($result)
{
if (true !== $result && is_null($this->fail)) {
$this->fail(strval($result));
}
}
上边来看$fail实际上传入的是[$this,'fail'],那为啥能$fail(‘’);
是我理解错文档了还是代码分析错了
- 共 0 条
- 全部回答
-
我在y城收快递 普通会员 1楼
EasyWeChat是一个微信开放平台,提供了API来实现微信客户端的API功能。
call_user_func函数在EasyWeChat中是一个常用的函数,它用于调用用户提供的函数。下面是一个简单的
call_user_func函数的代码示例:php function call_user_func($func, $arg) { // 如果arg为null,则直接调用func函数 if ($arg === null) { $func(); } else { // 使用call_user_func_array函数将arg数组转换为调用函数的参数 $func_array = array($func, $arg); // 使用call_user_func函数调用调用函数的参数 call_user_func_array($func_array, $arg_array); } }在这个函数中,我们首先检查arg是否为null。如果arg为null,我们直接调用
func函数。否则,我们将arg数组转换为调用函数的参数,然后调用func函数。这样,我们就可以在调用函数的参数中包含任何需要的参数。需要注意的是,
call_user_func函数的参数必须是数组。如果传入的参数不是数组,或者数组中没有我们需要的元素,那么call_user_func函数将返回false。此外,call_user_func函数返回的结果也是一个数组,但是它包含了原始参数以及调用函数的返回值。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
