From 57249882ab16e606245ca1b717b52bbc40dd2aaf Mon Sep 17 00:00:00 2001 From: "Timothy J. Warren" Date: Thu, 13 Jul 2023 11:06:52 -0400 Subject: [PATCH] Some minor code style fixes --- .php-cs-fixer.dist.php | 30 +- composer.json | 4 +- src/{AnimeClient => }/AnimeClient.php | 5 +- src/AnimeClient/API/APIRequestBuilder.php | 10 +- src/AnimeClient/API/AbstractListItem.php | 1 - src/AnimeClient/API/CacheTrait.php | 3 +- src/AnimeClient/API/Kitsu/RequestBuilder.php | 1 - .../Kitsu/Transformer/MangaTransformer.php | 2 +- src/AnimeClient/API/ParallelAPIRequest.php | 76 +++- src/AnimeClient/Controller.php | 413 +++++++++--------- src/AnimeClient/Dispatcher.php | 2 - src/AnimeClient/UrlGenerator.php | 2 - src/Ion/Json.php | 11 - src/Ion/Type/Stringy.php | 2 +- tests/Ion/ConfigTest.php | 3 +- tests/Ion/Type/StringTypeTest.php | 7 +- tests/Ion/functionsTest.php | 3 +- 17 files changed, 303 insertions(+), 272 deletions(-) rename src/{AnimeClient => }/AnimeClient.php (98%) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index c00fa4d1..5d9f3554 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -53,13 +53,13 @@ return (new Config()) 'yield_from', ], ], - 'braces' => [ - 'allow_single_line_anonymous_class_with_empty_body' => true, - 'allow_single_line_closure' => true, - 'position_after_anonymous_constructs' => 'same', - 'position_after_control_structures' => 'next', - 'position_after_functions_and_oop_constructs' => 'next', - ], +// 'braces' => [ +// 'allow_single_line_anonymous_class_with_empty_body' => true, +// 'allow_single_line_closure' => true, +// 'position_after_anonymous_constructs' => 'same', +// 'position_after_control_structures' => 'next', +// 'position_after_functions_and_oop_constructs' => 'next', +// ], 'cast_spaces' => ['space' => 'single'], 'class_attributes_separation' => [ 'elements' => [ @@ -93,7 +93,16 @@ return (new Config()) 'compact_nullable_typehint' => true, 'concat_space' => ['spacing' => 'one'], 'constant_case' => ['case' => 'upper'], + 'control_structure_braces' => true, 'control_structure_continuation_position' => ['position' => 'next_line'], + 'curly_braces_position' => [ + 'allow_single_line_anonymous_functions' => true, + 'allow_single_line_empty_anonymous_classes' => true, + 'anonymous_functions_opening_brace' => 'same_line', + 'classes_opening_brace' => 'next_line_unless_newline_at_signature_end', + 'control_structures_opening_brace' => 'next_line_unless_newline_at_signature_end', + 'functions_opening_brace' => 'next_line_unless_newline_at_signature_end', + ], 'date_time_immutable' => false, 'declare_equal_normalize' => ['space' => 'none'], 'declare_parentheses' => true, @@ -108,7 +117,7 @@ return (new Config()) 'long_function' => 'echo', 'shorten_simple_statements_only' => false, ], - 'elseif' => true, + 'elseif' => false, 'empty_loop_body' => ['style' => 'braces'], 'empty_loop_condition' => ['style' => 'while'], 'encoding' => true, @@ -429,8 +438,8 @@ return (new Config()) 'single_line_comment_style' => ['comment_types' => ['asterisk', 'hash']], 'single_line_throw' => false, 'single_quote' => ['strings_containing_single_quote_chars' => false], - 'single_space_after_construct' => [ - 'constructs' => [ + 'single_space_around_construct' => [ + 'constructs_followed_by_a_single_space' => [ 'abstract', 'as', 'attribute', @@ -493,6 +502,7 @@ return (new Config()) 'space_after_semicolon' => ['remove_in_empty_for_expressions' => true], 'standardize_increment' => true, 'standardize_not_equals' => true, + 'statement_indentation' => true, 'static_lambda' => true, 'strict_comparison' => true, 'strict_param' => true, diff --git a/composer.json b/composer.json index c248eff0..5e16500a 100644 --- a/composer.json +++ b/composer.json @@ -13,8 +13,8 @@ "autoload": { "files": [ "src/Ion/functions.php", - "src/AnimeClient/constants.php", - "src/AnimeClient/AnimeClient.php" + "src/AnimeClient.php", + "src/AnimeClient/constants.php" ], "psr-4": { "Aviat\\": "src/" diff --git a/src/AnimeClient/AnimeClient.php b/src/AnimeClient.php similarity index 98% rename from src/AnimeClient/AnimeClient.php rename to src/AnimeClient.php index ca5e53d7..5655d5eb 100644 --- a/src/AnimeClient/AnimeClient.php +++ b/src/AnimeClient.php @@ -18,7 +18,7 @@ use Amp\Http\Client\{HttpClient, HttpClientBuilder, Request, Response}; use Aviat\Ion\{ConfigInterface, ImageBuilder}; use DateTimeImmutable; -use Psr\SimpleCache\CacheInterface; +use Psr\SimpleCache\{CacheInterface, InvalidArgumentException}; use Throwable; use Yosymfony\Toml\{Toml, TomlBuilder}; @@ -218,7 +218,7 @@ function getResponse(Request|string $request): Response */ function getLocalImg(string $kitsuUrl, bool $webp = TRUE): string { - if (empty($kitsuUrl) || ( ! is_string($kitsuUrl))) + if (empty($kitsuUrl)) { return 'images/placeholder.webp'; } @@ -276,6 +276,7 @@ function colNotEmpty(array $search, string $key): bool /** * Clear the cache, but save user auth data + * @throws InvalidArgumentException */ function clearCache(CacheInterface $cache): bool { diff --git a/src/AnimeClient/API/APIRequestBuilder.php b/src/AnimeClient/API/APIRequestBuilder.php index 3e194206..4cce68d2 100644 --- a/src/AnimeClient/API/APIRequestBuilder.php +++ b/src/AnimeClient/API/APIRequestBuilder.php @@ -16,16 +16,14 @@ namespace Aviat\AnimeClient\API; // use Amp\Http\Client\Form; use Amp\Http\Client\Body\FormBody; -use Amp\Http\Client\HttpClientBuilder; -use Amp\Http\Client\HttpException; -use Amp\Http\Client\Request; +use Amp\Http\Client\{HttpClientBuilder, HttpException, Request}; use Aviat\Ion\Json; -use Error; use InvalidArgumentException; use Psr\Log\LoggerAwareTrait; use Throwable; -use TypeError; +// use function Amp\async; +// use function Amp\Future\await; use function Amp\Promise\wait; use function Aviat\AnimeClient\getResponse; use const Aviat\AnimeClient\USER_AGENT; @@ -221,8 +219,6 @@ abstract class APIRequestBuilder /** * Get the data from the response of the passed request * - * @param Request $request - * @return mixed * @throws Throwable */ public function getResponseData(Request $request): mixed diff --git a/src/AnimeClient/API/AbstractListItem.php b/src/AnimeClient/API/AbstractListItem.php index 02a37178..8b866e03 100644 --- a/src/AnimeClient/API/AbstractListItem.php +++ b/src/AnimeClient/API/AbstractListItem.php @@ -38,7 +38,6 @@ abstract class AbstractListItem * Retrieve a list item * * @param string $id - The id of the list item - * @return mixed[] */ abstract public function get(string $id): array; diff --git a/src/AnimeClient/API/CacheTrait.php b/src/AnimeClient/API/CacheTrait.php index b6f91419..745808be 100644 --- a/src/AnimeClient/API/CacheTrait.php +++ b/src/AnimeClient/API/CacheTrait.php @@ -14,7 +14,7 @@ namespace Aviat\AnimeClient\API; -use Psr\SimpleCache\CacheInterface; +use Psr\SimpleCache\{CacheInterface, InvalidArgumentException}; /** * Helper methods for dealing with the Cache @@ -44,6 +44,7 @@ trait CacheTrait /** * Get the cached value if it exists, otherwise set the cache value * and return it. + * @throws InvalidArgumentException */ public function getCached(string $key, callable $primer, ?array $primeArgs = []): mixed { diff --git a/src/AnimeClient/API/Kitsu/RequestBuilder.php b/src/AnimeClient/API/Kitsu/RequestBuilder.php index 204bedee..ef9db924 100644 --- a/src/AnimeClient/API/Kitsu/RequestBuilder.php +++ b/src/AnimeClient/API/Kitsu/RequestBuilder.php @@ -16,7 +16,6 @@ namespace Aviat\AnimeClient\API\Kitsu; use Amp\Http\Client\{Request, Response}; use Aviat\AnimeClient\API\APIRequestBuilder; -use Aviat\AnimeClient\Enum\EventType; use Aviat\AnimeClient\Kitsu as K; use Aviat\Ion\Di\{ContainerAware, ContainerInterface}; use Aviat\Ion\{Event, Json, JsonException}; diff --git a/src/AnimeClient/API/Kitsu/Transformer/MangaTransformer.php b/src/AnimeClient/API/Kitsu/Transformer/MangaTransformer.php index 668e08e1..980d9fdb 100644 --- a/src/AnimeClient/API/Kitsu/Transformer/MangaTransformer.php +++ b/src/AnimeClient/API/Kitsu/Transformer/MangaTransformer.php @@ -54,7 +54,7 @@ final class MangaTransformer extends AbstractTransformer } $details = $rawCharacter['character']; - if (array_key_exists($details['id'], (array)$characters[$type])) + if (array_key_exists($details['id'], (array) $characters[$type])) { $characters[$type][$details['id']] = [ 'image' => Kitsu::getImage($details), diff --git a/src/AnimeClient/API/ParallelAPIRequest.php b/src/AnimeClient/API/ParallelAPIRequest.php index ab66c3cf..a3b43123 100644 --- a/src/AnimeClient/API/ParallelAPIRequest.php +++ b/src/AnimeClient/API/ParallelAPIRequest.php @@ -14,11 +14,12 @@ namespace Aviat\AnimeClient\API; -use Amp\Http\Client\Request; +use Amp\Http\Client\{HttpException, Request}; use Generator; use Throwable; use function Amp\call; +// use function Amp\Future\{async, await}; use function Amp\Promise\{all, wait}; use function Aviat\AnimeClient\getApiClient; @@ -65,9 +66,23 @@ final class ParallelAPIRequest * Make the requests, and return the body for each * * @throws Throwable - * @return mixed[] */ public function makeRequests(): array + { + return $this->makeRequestOld(); + } + + /** + * Make the requests and return the response objects + * + * @throws Throwable + */ + public function getResponses(): array + { + return $this->getResponsesOld(); + } + + private function makeRequestOld(): array { $client = getApiClient(); @@ -84,13 +99,19 @@ final class ParallelAPIRequest return wait(all($promises)); } - /** - * Make the requests and return the response objects - * - * @throws Throwable - * @return mixed[] - */ - public function getResponses(): array + private function makeRequestsNew(): array + { + $futures = []; + + foreach ($this->requests as $key => $url) + { + $futures[$key] = async(static fn () => self::bodyHandler($url)); + } + + return await($futures); + } + + private function getResponsesOld(): array { $client = getApiClient(); @@ -103,4 +124,41 @@ final class ParallelAPIRequest return wait(all($promises)); } + + private function getResponsesNew(): array + { + $futures = []; + + foreach ($this->requests as $key => $url) + { + $futures[$key] = async(static fn () => self::responseHandler($url)); + } + + return await($futures); + } + + private static function bodyHandler(string|Request $uri): string + { + $client = getApiClient(); + + if (is_string($uri)) + { + $uri = new Request($uri); + } + $response = $client->request($uri); + + return $response->getBody()->buffer(); + } + + private static function responseHandler(string|Request $uri) + { + $client = getApiClient(); + + if (is_string($uri)) + { + $uri = new Request($uri); + } + + return $client->request($uri); + } } diff --git a/src/AnimeClient/Controller.php b/src/AnimeClient/Controller.php index f10e0647..52e09f9e 100644 --- a/src/AnimeClient/Controller.php +++ b/src/AnimeClient/Controller.php @@ -120,194 +120,185 @@ class Controller Event::on(EventType::RESET_CACHE_KEY, fn (string $key) => $this->cache->delete($key)); } - /** - * Set the current url in the session as the target of a future redirect - * - * @throws ContainerException - * @throws NotFoundException - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - public function setSessionRedirect(?string $url = NULL): void - { - $serverParams = $this->request->getServerParams(); + /** + * Set the current url in the session as the target of a future redirect + * + * @throws ContainerException + * @throws NotFoundException + */ + public function setSessionRedirect(?string $url = NULL): void + { + $serverParams = $this->request->getServerParams(); - if ( ! array_key_exists('HTTP_REFERER', $serverParams)) - { - return; - } + if ( ! array_key_exists('HTTP_REFERER', $serverParams)) + { + return; + } - $util = $this->container->get('util'); - $doubleFormPage = $serverParams['HTTP_REFERER'] === $this->request->getUri(); - $isLoginPage = str_contains($serverParams['HTTP_REFERER'], 'login'); + $util = $this->container->get('util'); + $doubleFormPage = $serverParams['HTTP_REFERER'] === $this->request->getUri(); + $isLoginPage = str_contains($serverParams['HTTP_REFERER'], 'login'); - // Don't attempt to set the redirect url if - // the page is one of the form type pages, - // and the previous page is also a form type - if ($doubleFormPage || $isLoginPage) - { - return; - } + // Don't attempt to set the redirect url if + // the page is one of the form type pages, + // and the previous page is also a form type + if ($doubleFormPage || $isLoginPage) + { + return; + } - if (NULL === $url) - { - $url = $util->isViewPage() - ? (string) $this->request->getUri() - : $serverParams['HTTP_REFERER']; - } + if (NULL === $url) + { + $url = $util->isViewPage() + ? (string) $this->request->getUri() + : $serverParams['HTTP_REFERER']; + } - $this->session->set('redirect_url', $url); - } + $this->session->set('redirect_url', $url); + } - /** - * Redirect to the url previously set in the session - * - * If one is not set, redirect to default url - * - * @throws InvalidArgumentException - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - public function sessionRedirect(): void - { - $target = $this->session->get('redirect_url') ?? '/'; + /** + * Redirect to the url previously set in the session + * + * If one is not set, redirect to default url + * + * @throws InvalidArgumentException + */ + public function sessionRedirect(): void + { + $target = $this->session->get('redirect_url') ?? '/'; - $this->redirect($target, 303); - $this->session->set('redirect_url', NULL); - } + $this->redirect($target, 303); + $this->session->set('redirect_url', NULL); + } - /** - * Check if the current user is authenticated, else error and exit - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - protected function checkAuth(): void - { - if ( ! $this->auth->isAuthenticated()) - { - $this->errorPage( - 403, - 'Forbidden', - 'You must log in to perform this action.' - ); - } - } + /** + * Check if the current user is authenticated, else error and exit + */ + protected function checkAuth(): void + { + if ( ! $this->auth->isAuthenticated()) + { + $this->errorPage( + 403, + 'Forbidden', + 'You must log in to perform this action.' + ); + } + } - /** - * Get the string output of a partial template - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - protected function loadPartial(HtmlView $view, string $template, array $data = []): string - { - $router = $this->container->get('dispatcher'); + /** + * Get the string output of a partial template + */ + protected function loadPartial(HtmlView $view, string $template, array $data = []): string + { + $router = $this->container->get('dispatcher'); - if (isset($this->baseData)) - { - $data = array_merge($this->baseData, $data); - } + if (isset($this->baseData)) + { + $data = array_merge($this->baseData, $data); + } - $route = $router->getRoute(); - $data['route_path'] = $route !== FALSE ? $route->path : ''; + $route = $router->getRoute(); + $data['route_path'] = $route !== FALSE ? $route->path : ''; - $templatePath = _dir($this->config->get('view_path'), "{$template}.php"); + $templatePath = _dir($this->config->get('view_path'), "{$template}.php"); - if ( ! is_file($templatePath)) - { - throw new InvalidArgumentException("Invalid template : {$template}"); - } + if ( ! is_file($templatePath)) + { + throw new InvalidArgumentException("Invalid template : {$template}"); + } - return $view->renderTemplate($templatePath, $data); - } + return $view->renderTemplate($templatePath, $data); + } - /** - * Render a template with header and footer - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - protected function renderFullPage(HtmlView $view, string $template, array $data): HtmlView - { - $csp = [ - "default-src 'self' media.kitsu.io kitsu-production-media.s3.us-west-002.backblazeb2.com", - "object-src 'none'", - "child-src 'self' *.youtube.com polyfill.io", - ]; + /** + * Render a template with header and footer + */ + protected function renderFullPage(HtmlView $view, string $template, array $data): HtmlView + { + $csp = [ + "default-src 'self' media.kitsu.io kitsu-production-media.s3.us-west-002.backblazeb2.com", + "object-src 'none'", + "child-src 'self' *.youtube.com polyfill.io", + ]; - $view->addHeader('Content-Security-Policy', implode('; ', $csp)); - $view->appendOutput($this->loadPartial($view, 'header', $data)); + $view->addHeader('Content-Security-Policy', implode('; ', $csp)); + $view->appendOutput($this->loadPartial($view, 'header', $data)); - if (array_key_exists('message', $data) && is_array($data['message'])) - { - $view->appendOutput($this->loadPartial($view, 'message', $data['message'])); - } + if (array_key_exists('message', $data) && is_array($data['message'])) + { + $view->appendOutput($this->loadPartial($view, 'message', $data['message'])); + } - $view->appendOutput($this->loadPartial($view, $template, $data)); - $view->appendOutput($this->loadPartial($view, 'footer', $data)); + $view->appendOutput($this->loadPartial($view, $template, $data)); + $view->appendOutput($this->loadPartial($view, 'footer', $data)); - return $view; - } + return $view; + } - /** - * 404 action - * - * @throws InvalidArgumentException - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - public function notFound( - string $title = 'Sorry, page not found', - string $message = 'Page Not Found' - ): never { - $this->outputHTML('404', [ - 'title' => $title, - 'message' => $message, - ], NULL, 404); + /** + * 404 action + * + * @throws InvalidArgumentException + */ + public function notFound( + string $title = 'Sorry, page not found', + string $message = 'Page Not Found' + ): never { + $this->outputHTML('404', [ + 'title' => $title, + 'message' => $message, + ], NULL, 404); - exit(); - } + exit(); + } - /** - * Display a generic error page - * - * @throws InvalidArgumentException - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - public function errorPage(int $httpCode, string $title, string $message, string $longMessage = ''): void - { - $this->outputHTML('error', [ - 'title' => $title, - 'message' => $message, - 'long_message' => $longMessage, - ], NULL, $httpCode); - } + /** + * Display a generic error page + * + * @throws InvalidArgumentException + */ + public function errorPage(int $httpCode, string $title, string $message, string $longMessage = ''): void + { + $this->outputHTML('error', [ + 'title' => $title, + 'message' => $message, + 'long_message' => $longMessage, + ], NULL, $httpCode); + } - /** - * Redirect to the default controller/url from an empty path - * - * @throws InvalidArgumentException - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - public function redirectToDefaultRoute(): void - { - $defaultType = $this->config->get('default_list'); - $this->redirect($this->urlGenerator->defaultUrl($defaultType), 303); - } + /** + * Redirect to the default controller/url from an empty path + * + * @throws InvalidArgumentException + */ + public function redirectToDefaultRoute(): void + { + $defaultType = $this->config->get('default_list'); + $this->redirect($this->urlGenerator->defaultUrl($defaultType), 303); + } - /** - * Set a session flash variable to display a message on - * next page load - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - public function setFlashMessage(string $message, string $type = 'info'): void - { - static $messages; + /** + * Set a session flash variable to display a message on + * next page load + */ + public function setFlashMessage(string $message, string $type = 'info'): void + { + static $messages; - if ( ! $messages) - { - $messages = []; - } + if ( ! $messages) + { + $messages = []; + } - $messages[] = [ - 'message_type' => $type, - 'message' => $message, - ]; + $messages[] = [ + 'message_type' => $type, + 'message' => $message, + ]; - $this->session->setFlash('message', $messages); - } + $this->session->setFlash('message', $messages); + } /** * Helper for consistent page titles @@ -319,62 +310,58 @@ class Controller return implode(' · ', $parts); } - /** - * Add a message box to the page - * - * @throws InvalidArgumentException - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - protected function showMessage(HtmlView $view, string $type, string $message): string - { - return $this->loadPartial($view, 'message', [ - 'message_type' => $type, - 'message' => $message, - ]); - } + /** + * Add a message box to the page + * + * @throws InvalidArgumentException + */ + protected function showMessage(HtmlView $view, string $type, string $message): string + { + return $this->loadPartial($view, 'message', [ + 'message_type' => $type, + 'message' => $message, + ]); + } - /** - * Output a template to HTML, using the provided data - * - * @throws InvalidArgumentException - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - protected function outputHTML(string $template, array $data = [], ?HtmlView $view = NULL, int $code = 200): void - { - if (NULL === $view) - { - $view = new HtmlView($this->container); - } + /** + * Output a template to HTML, using the provided data + * + * @throws InvalidArgumentException + */ + protected function outputHTML(string $template, array $data = [], ?HtmlView $view = NULL, int $code = 200): void + { + if (NULL === $view) + { + $view = new HtmlView($this->container); + } - $view->setStatusCode($code); - $this->renderFullPage($view, $template, $data)->send(); - } + $view->setStatusCode($code); + $this->renderFullPage($view, $template, $data)->send(); + } - /** - * Output a JSON Response - * - * @param int $code - the http status code - * @throws DoubleRenderException - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - protected function outputJSON(mixed $data, int $code): void - { - JsonView::new() - ->setOutput($data) - ->setStatusCode($code) - ->send(); - } + /** + * Output a JSON Response + * + * @param int $code - the http status code + * @throws DoubleRenderException + */ + protected function outputJSON(mixed $data, int $code): void + { + JsonView::new() + ->setOutput($data) + ->setStatusCode($code) + ->send(); + } - /** - * Redirect to the selected page - */ - #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] - protected function redirect(string $url, int $code): void - { - HttpView::new() - ->redirect($url, $code) - ->send(); - } + /** + * Redirect to the selected page + */ + protected function redirect(string $url, int $code): void + { + HttpView::new() + ->redirect($url, $code) + ->send(); + } } // End of BaseController.php diff --git a/src/AnimeClient/Dispatcher.php b/src/AnimeClient/Dispatcher.php index 97ad2a52..31721d2c 100644 --- a/src/AnimeClient/Dispatcher.php +++ b/src/AnimeClient/Dispatcher.php @@ -214,8 +214,6 @@ final class Dispatcher extends RoutingBase /** * Get the list of controllers in the default namespace - * - * @return array */ public function getControllerList(): array { diff --git a/src/AnimeClient/UrlGenerator.php b/src/AnimeClient/UrlGenerator.php index 337250ef..def45928 100644 --- a/src/AnimeClient/UrlGenerator.php +++ b/src/AnimeClient/UrlGenerator.php @@ -98,9 +98,7 @@ class UrlGenerator extends RoutingBase if ($defaultPath !== NULL) { - // @codeCoverageIgnoreStart return $this->url("{$type}/{$defaultPath}"); - // @codeCoverageIgnoreEnd } throw new InvalidArgumentException("Invalid default type: '{$type}'"); diff --git a/src/Ion/Json.php b/src/Ion/Json.php index 781c77ea..b39df121 100644 --- a/src/Ion/Json.php +++ b/src/Ion/Json.php @@ -25,10 +25,7 @@ class Json /** * Encode data in json format * - * @param mixed $data - * @param int $options * @param int<1, max> $depth - * @return string */ public static function encode(mixed $data, int $options = 0, int $depth = 512): string { @@ -57,11 +54,7 @@ class Json /** * Decode data from json * - * @param string|null $json - * @param bool $assoc * @param int<1, max> $depth - * @param int $options - * @return mixed */ public static function decode(?string $json, bool $assoc = TRUE, int $depth = 512, int $options = 0): mixed { @@ -81,11 +74,7 @@ class Json /** * Decode json data loaded from the passed filename * - * @param string $filename - * @param bool $assoc * @param int<1, max> $depth - * @param int $options - * @return mixed */ public static function decodeFile(string $filename, bool $assoc = TRUE, int $depth = 512, int $options = 0): mixed { diff --git a/src/Ion/Type/Stringy.php b/src/Ion/Type/Stringy.php index 8e4c40a6..54eaea05 100644 --- a/src/Ion/Type/Stringy.php +++ b/src/Ion/Type/Stringy.php @@ -2138,7 +2138,7 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess return mb_regex_encoding(...$args); } - return null; + return NULL; } protected function supportsEncoding(): bool|null diff --git a/tests/Ion/ConfigTest.php b/tests/Ion/ConfigTest.php index c32d9010..910be9dd 100644 --- a/tests/Ion/ConfigTest.php +++ b/tests/Ion/ConfigTest.php @@ -15,8 +15,7 @@ namespace Aviat\Ion\Tests; use Aviat\Ion\Config; -use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\IgnoreMethodForCodeCoverage; +use PHPUnit\Framework\Attributes\{DataProvider, IgnoreMethodForCodeCoverage}; /** * @internal diff --git a/tests/Ion/Type/StringTypeTest.php b/tests/Ion/Type/StringTypeTest.php index 1a762153..247d6669 100644 --- a/tests/Ion/Type/StringTypeTest.php +++ b/tests/Ion/Type/StringTypeTest.php @@ -15,11 +15,8 @@ namespace Aviat\Ion\Tests\Type; use Aviat\Ion\Tests\IonTestCase; -use Aviat\Ion\Type\StringType; -use Aviat\Ion\Type\Stringy; -use PHPUnit\Framework\Attributes\DataProvider; -use PHPUnit\Framework\Attributes\IgnoreClassForCodeCoverage; -use PHPUnit\Framework\Attributes\Test; +use Aviat\Ion\Type\{StringType, Stringy}; +use PHPUnit\Framework\Attributes\{DataProvider, IgnoreClassForCodeCoverage, Test}; /** * @internal diff --git a/tests/Ion/functionsTest.php b/tests/Ion/functionsTest.php index 1d77b2f8..51fb2203 100644 --- a/tests/Ion/functionsTest.php +++ b/tests/Ion/functionsTest.php @@ -14,8 +14,7 @@ namespace Aviat\Ion\Tests; -use PHPUnit\Framework\Attributes\IgnoreClassForCodeCoverage; -use PHPUnit\Framework\Attributes\Test; +use PHPUnit\Framework\Attributes\{IgnoreClassForCodeCoverage, Test}; use PHPUnit\Framework\TestCase; use function Aviat\Ion\_dir;