hooks = collect(); } /** * 注册Hook * * @param NotificationHookInterface $hook * @return void */ public function register(NotificationHookInterface $hook): void { $this->hooks->push($hook); } /** * 执行发送前钩子 * * @param array $data * @return array */ public function executeBeforeSend(array $data): array { foreach ($this->hooks as $hook) { $data = $hook->beforeSend($data); } return $data; } /** * 执行发送后钩子 * * @param array $data * @param bool $result * @return void */ public function executeAfterSend(array $data, bool $result): void { foreach ($this->hooks as $hook) { $hook->afterSend($data, $result); } } /** * 执行错误钩子 * * @param array $data * @param \Exception $exception * @return void */ public function executeOnError(array $data, \Exception $exception): void { foreach ($this->hooks as $hook) { $hook->onError($data, $exception); } } }