作者 竞泽

feat:config fn

@@ -16,7 +16,10 @@ @@ -16,7 +16,10 @@
16 "autoload-dev": { 16 "autoload-dev": {
17 "psr-4": { 17 "psr-4": {
18 "Lackoxygen\\ExceptionPush\\Tests\\": "tests/" 18 "Lackoxygen\\ExceptionPush\\Tests\\": "tests/"
19 - } 19 + },
  20 + "files": [
  21 + "src/Helper.php"
  22 + ]
20 }, 23 },
21 "require": { 24 "require": {
22 "php": ">=7.4", 25 "php": ">=7.4",
@@ -12,13 +12,7 @@ class Dispatcher implements CallbackInterface @@ -12,13 +12,7 @@ class Dispatcher implements CallbackInterface
12 */ 12 */
13 public function config(): ?\Closure 13 public function config(): ?\Closure
14 { 14 {
15 - $dispatcher = ExceptionPush::config('callbacks.dispatcher');  
16 -  
17 - if ($dispatcher instanceof \Closure) {  
18 - return $dispatcher;  
19 - }  
20 -  
21 - return null; 15 + return closure(ExceptionPush::config('callbacks.dispatcher'));
22 } 16 }
23 17
24 /** 18 /**
@@ -30,13 +30,7 @@ class Formatter implements CallbackInterface @@ -30,13 +30,7 @@ class Formatter implements CallbackInterface
30 */ 30 */
31 public function config(): ?\Closure 31 public function config(): ?\Closure
32 { 32 {
33 - $formatter = ExceptionPush::config('callbacks.formatter');  
34 -  
35 - if ($formatter instanceof \Closure) {  
36 - return $formatter;  
37 - }  
38 -  
39 - return null; 33 + return closure(ExceptionPush::config('callbacks.formatter'));
40 } 34 }
41 35
42 36
  1 +<?php
  2 +
  3 +namespace Lackoxygen\ExceptionPush;
  4 +
  5 +if (!function_exists('closure')) {
  6 + function closure($closure): ?\Closure
  7 + {
  8 + if (is_array($closure) && 2 === count($closure)) {
  9 + [$class, $method] = $closure;
  10 +
  11 + return function () use ($class, $method) {
  12 + $handler = new $class;
  13 +
  14 + return call_user_func_array([$handler, $method], ...func_get_args());
  15 + };
  16 + }
  17 +
  18 + if (is_string($closure)) {
  19 + return function () use ($closure) {
  20 + return call_user_func($closure, ...func_get_args());
  21 + };
  22 + }
  23 +
  24 + return $closure instanceof \Closure ? $closure : null;
  25 + }
  26 +}