From 1a49739d97d728ccef2f64cb6c38149e1a153a14 Mon Sep 17 00:00:00 2001 From: gzhegow <6562680@gmail.com> Date: Thu, 27 Jun 2024 18:22:37 +0300 Subject: [PATCH] main --- src/Lib.php | 65 +++++++++++++++++++++++------------------------------ 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/src/Lib.php b/src/Lib.php index 1ef131c..5516f3b 100644 --- a/src/Lib.php +++ b/src/Lib.php @@ -105,14 +105,13 @@ public static function php_throwable($error = null, ...$errors) : ?object * previousList: string[], * messageCodeList: array[], * messageDataList: array[], - * messageObjectList: object[], * message: ?string, * code: ?int, * previous: ?string, * messageCode: ?string, * messageData: ?array, * messageObject: ?object, - * unresolved: array, + * __unresolved: array, * } */ public static function php_throwable_args($arg = null, ...$args) : array @@ -126,34 +125,31 @@ public static function php_throwable_args($arg = null, ...$args) : array $previousList = null; $messageCodeList = null; $messageDataList = null; - $messageObjectList = null; $message = null; $code = null; $previous = null; $messageCode = null; - $messageData = null; - $messageObject = null; - $unresolved = []; + $__unresolved = []; for ( $i = 0; $i < $len; $i++ ) { $a = $args[ $i ]; if (is_int($a)) { - $code = $codeList[ $i ] = $a; + $codeList[ $i ] = $a; continue; } if (is_a($a, \Throwable::class)) { - $previous = $previousList[ $i ] = $a; + $previousList[ $i ] = $a; continue; } - if (null !== ($vString = static::filter_string($a))) { - $message = $messageList[ $i ] = $vString; + if ('' !== ($vString = (string) $a)) { + $messageList[ $i ] = $vString; continue; } @@ -162,39 +158,28 @@ public static function php_throwable_args($arg = null, ...$args) : array is_array($a) || is_a($a, \stdClass::class) ) { - $messageData = $messageDataList[ $i ] = (array) $a; + $messageDataList[ $i ] = (array) $a; - continue; - } + if ('' !== ($messageString = (string) $messageDataList[ $i ][ 0 ])) { + $messageList[ $i ] = $messageString; - $unresolved[ $i ] = $a; - } + unset($messageDataList[ $i ][ 0 ]); - for ( $i = $len - 1; $i >= 0; $i-- ) { - if (isset($messageDataList[ $i ][ 0 ])) { - if ($messageString = static::filter_string($messageDataList[ $i ][ 0 ])) { - $message = $messageList[ $i ] = $messageString; + if (! $messageDataList[ $i ]) { + unset($messageDataList[ $i ]); + } } - } - - if (isset($messageList[ $i ])) { - if (preg_match('/^[a-z](?!.*\s)/i', $messageList[ $i ])) { - $messageCode = $messageCodeList[ $i ] = strtoupper($messageList[ $i ]); - } - } - if (null !== $messageDataList[ $i ]) { - $messageObject = $messageObjectList[ $i ] = (object) $messageDataList[ $i ]; - - } elseif (null !== $messageList[ $i ]) { - $messageObject = $messageObjectList[ $i ] = (object) [ $messageList[ $i ] ]; + continue; } - if (null !== $messageDataList[ $i ]) { - unset($messageDataList[ $i ][ 0 ]); + $__unresolved[ $i ] = $a; + } - if (empty($messageDataList[ $i ])) { - $messageDataList[ $i ] = null; + for ( $i = 0; $i < $len; $i++ ) { + if (isset($messageList[ $i ])) { + if (preg_match('/^[a-z](?!.*\s)/i', $messageList[ $i ])) { + $messageCodeList[ $i ] = strtoupper($messageList[ $i ]); } } } @@ -204,16 +189,22 @@ public static function php_throwable_args($arg = null, ...$args) : array $result[ 'messageList' ] = $messageList; $result[ 'codeList' ] = $codeList; $result[ 'previousList' ] = $previousList; + $result[ 'messageCodeList' ] = $messageCodeList; $result[ 'messageDataList' ] = $messageDataList; - $result[ 'messageObjectList' ] = $messageObjectList; + + $messageDataList = $messageDataList ?? []; + $messageData = array_replace(...$messageDataList); + $messageObject = (object) ([ $message ] + $messageData); $result[ 'message' ] = $message; $result[ 'code' ] = $code; $result[ 'previous' ] = $previous; + $result[ 'messageCode' ] = $messageCode; $result[ 'messageData' ] = $messageData; + $result[ 'messageObject' ] = $messageObject; - $result[ 'unresolved' ] = $unresolved; + $result[ '__unresolved' ] = $__unresolved; return $result; }