From b13c35eaec36f06674034a0cf485c0e3b3a35a9f Mon Sep 17 00:00:00 2001 From: "Timothy J. Warren" Date: Tue, 9 May 2023 12:52:11 -0400 Subject: [PATCH] More code style updates --- .php-cs-fixer.dist.php | 42 ++-- src/AnimeClient/Controller.php | 290 ++++++++++++------------- src/AnimeClient/Dispatcher.php | 62 +++--- src/AnimeClient/FormGenerator.php | 6 +- src/AnimeClient/MenuGenerator.php | 26 +-- src/AnimeClient/Types/AbstractType.php | 92 ++++---- src/Ion/Type/ArrayType.php | 16 +- src/Ion/Type/Stringy.php | 80 ++++--- tools/rector.php | 10 +- 9 files changed, 314 insertions(+), 310 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 37df8f9a..c00fa4d1 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -5,22 +5,12 @@ use PhpCsFixer\{Config, Finder}; $finder = Finder::create() ->in([ - __DIR__, - __DIR__ . '/app', + __DIR__ . '/src', + __DIR__ . '/tests', __DIR__ . '/tools', ]) ->exclude([ - 'apidocs', - 'build', - 'coverage', - 'frontEndSrc', - 'phinx', - 'public', - 'tools', - 'tmp', 'vendor', - 'views', - 'templates', ]); return (new Config()) @@ -45,7 +35,7 @@ return (new Config()) 'blank_line_after_opening_tag' => false, 'blank_line_before_statement' => [ 'statements' => [ - 'case', + // 'case', 'continue', 'declare', 'default', @@ -128,12 +118,12 @@ return (new Config()) 'noise_remaining_usages_exclude' => [], ], 'escape_implicit_backslashes' => [ - 'double_quoted' => true, - 'heredoc_syntax' => true, + 'double_quoted' => false, + 'heredoc_syntax' => false, 'single_quoted' => false, ], - 'explicit_indirect_variable' => true, - 'explicit_string_variable' => true, + 'explicit_indirect_variable' => false, + 'explicit_string_variable' => false, 'final_class' => false, 'final_internal_class' => [ 'annotation_exclude' => ['@no-final'], @@ -167,7 +157,7 @@ return (new Config()) ], 'group_import' => true, 'header_comment' => false, // false by default - 'heredoc_indentation' => ['indentation' => 'start_plus_one'], + // 'heredoc_indentation' => ['indentation' => 'start_plus_one'], 'heredoc_to_nowdoc' => true, 'implode_call' => true, 'include' => true, @@ -232,8 +222,7 @@ return (new Config()) 'allow_unused_params' => true, 'remove_inheritdoc' => false, ], - 'no_trailing_comma_in_list_call' => true, - 'no_trailing_comma_in_singleline_array' => true, + 'no_trailing_comma_in_singleline' => true, 'no_trailing_whitespace' => true, 'no_trailing_whitespace_in_comment' => true, 'no_trailing_whitespace_in_string' => true, @@ -270,9 +259,16 @@ return (new Config()) 'ordered_class_elements' => [ 'order' => [ 'use_trait', - 'constant', - 'property', - 'method', + 'case', + 'constant_public', + 'constant_protected', + 'constant_private', + 'property_public', + 'property_protected', + 'property_private', + 'construct', + 'destruct', + 'magic', ], 'sort_algorithm' => 'none', ], diff --git a/src/AnimeClient/Controller.php b/src/AnimeClient/Controller.php index b7363d9d..275076e6 100644 --- a/src/AnimeClient/Controller.php +++ b/src/AnimeClient/Controller.php @@ -42,6 +42,11 @@ class Controller { use ContainerAware; + /** + * The global configuration object + */ + public ConfigInterface $config; + /** * The authentication object */ @@ -52,11 +57,6 @@ class Controller */ protected CacheInterface $cache; - /** - * The global configuration object - */ - public ConfigInterface $config; - /** * Request object */ @@ -120,7 +120,7 @@ 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 @@ -128,37 +128,37 @@ class Controller */ #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] public function setSessionRedirect(?string $url = NULL): void - { - $serverParams = $this->request->getServerParams(); + { + $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 @@ -167,147 +167,147 @@ class Controller */ #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] public function sessionRedirect(): void - { - $target = $this->session->get('redirect_url') ?? '/'; + { + $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.' - ); - } - } + { + 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'); + { + $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", - ]; + { + $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' - ): void { - $this->outputHTML('404', [ - 'title' => $title, - 'message' => $message, - ], NULL, 404); + string $title = 'Sorry, page not found', + string $message = 'Page Not Found' + ): void { + $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); - } + { + $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); - } + { + $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; + { + 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,38 +319,38 @@ 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, - ]); - } + { + 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); - } + { + 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 @@ -358,23 +358,23 @@ class Controller */ #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] protected function outputJSON(mixed $data, int $code): void - { - JsonView::new() - ->setOutput($data) - ->setStatusCode($code) - ->send(); - } + { + 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(); - } + { + HttpView::new() + ->redirect($url, $code) + ->send(); + } } // End of BaseController.php diff --git a/src/AnimeClient/Dispatcher.php b/src/AnimeClient/Dispatcher.php index b278091d..230a0a61 100644 --- a/src/AnimeClient/Dispatcher.php +++ b/src/AnimeClient/Dispatcher.php @@ -69,37 +69,6 @@ final class Dispatcher extends RoutingBase $this->outputRoutes = $this->setupRoutes(); } - /** - * Get the current route object, if one matches - */ - public function getRoute(): Route|false - { - $logger = $this->container->getLogger(); - - $rawRoute = $this->request->getUri()->getPath(); - $routePath = '/' . trim($rawRoute, '/'); - - if ($logger !== NULL) - { - $logger->info('Dispatcher - Routing data from get_route method'); - $logger->info(print_r([ - 'route_path' => $routePath, - ], TRUE)); - } - - return $this->matcher->match($this->request); - } - - /** - * Get list of routes applied - * - * @return mixed[] - */ - public function getOutputRoutes(): array - { - return $this->outputRoutes; - } - /** * Handle the current route * @@ -141,6 +110,37 @@ final class Dispatcher extends RoutingBase $this->call($controllerName, $actionMethod, $params); } + /** + * Get the current route object, if one matches + */ + public function getRoute(): Route|false + { + $logger = $this->container->getLogger(); + + $rawRoute = $this->request->getUri()->getPath(); + $routePath = '/' . trim($rawRoute, '/'); + + if ($logger !== NULL) + { + $logger->info('Dispatcher - Routing data from get_route method'); + $logger->info(print_r([ + 'route_path' => $routePath, + ], TRUE)); + } + + return $this->matcher->match($this->request); + } + + /** + * Get list of routes applied + * + * @return mixed[] + */ + public function getOutputRoutes(): array + { + return $this->outputRoutes; + } + /** * Parse out the arguments for the appropriate controller for * the current route diff --git a/src/AnimeClient/FormGenerator.php b/src/AnimeClient/FormGenerator.php index 182476a7..ccf67960 100644 --- a/src/AnimeClient/FormGenerator.php +++ b/src/AnimeClient/FormGenerator.php @@ -83,16 +83,16 @@ final class FormGenerator ]; $params['strict'] = TRUE; unset($params['attribs']['id']); - break; + break; case 'string': $params['type'] = 'text'; - break; + break; case 'select': $params['type'] = 'select'; $params['options'] = array_flip($form['options']); - break; + break; default: break; diff --git a/src/AnimeClient/MenuGenerator.php b/src/AnimeClient/MenuGenerator.php index 5941e228..9d43d62a 100644 --- a/src/AnimeClient/MenuGenerator.php +++ b/src/AnimeClient/MenuGenerator.php @@ -36,6 +36,19 @@ final class MenuGenerator extends UrlGenerator */ protected ServerRequestInterface $request; + /** + * MenuGenerator constructor. + * + * @throws ContainerException + * @throws NotFoundException + */ + private function __construct(ContainerInterface $container) + { + parent::__construct($container); + $this->helper = $container->get('html-helper'); + $this->request = $container->get('request'); + } + public static function new(ContainerInterface $container): self { return new self($container); @@ -80,19 +93,6 @@ final class MenuGenerator extends UrlGenerator return (string) $this->helper->ul(); } - /** - * MenuGenerator constructor. - * - * @throws ContainerException - * @throws NotFoundException - */ - private function __construct(ContainerInterface $container) - { - parent::__construct($container); - $this->helper = $container->get('html-helper'); - $this->request = $container->get('request'); - } - /** * Generate the full menu structure from the config files * diff --git a/src/AnimeClient/Types/AbstractType.php b/src/AnimeClient/Types/AbstractType.php index a49d532d..81ddca5c 100644 --- a/src/AnimeClient/Types/AbstractType.php +++ b/src/AnimeClient/Types/AbstractType.php @@ -20,37 +20,6 @@ use Stringable; abstract class AbstractType implements ArrayAccess, Countable, Stringable { - /** - * Populate values for un-serializing data - */ - public static function __set_state(mixed $properties): self - { - return new static($properties); - } - - /** - * Check the shape of the object, and return the array equivalent - */ - final public static function check(array $data = []): ?array - { - $currentClass = static::class; - - if (get_parent_class($currentClass) !== FALSE) - { - return static::class::from($data)->toArray(); - } - - return NULL; - } - - /** - * Static constructor - */ - final public static function from(mixed $data): static - { - return new static($data); - } - /** * Sets the properties by using the constructor */ @@ -73,6 +42,14 @@ abstract class AbstractType implements ArrayAccess, Countable, Stringable } } + /** + * Populate values for un-serializing data + */ + public static function __set_state(mixed $properties): self + { + return new static($properties); + } + /** * See if a property is set */ @@ -123,6 +100,29 @@ abstract class AbstractType implements ArrayAccess, Countable, Stringable return print_r($this, TRUE); } + /** + * Check the shape of the object, and return the array equivalent + */ + final public static function check(array $data = []): ?array + { + $currentClass = static::class; + + if (get_parent_class($currentClass) !== FALSE) + { + return static::class::from($data)->toArray(); + } + + return NULL; + } + + /** + * Static constructor + */ + final public static function from(mixed $data): static + { + return new static($data); + } + /** * Implementing ArrayAccess */ @@ -203,23 +203,23 @@ abstract class AbstractType implements ArrayAccess, Countable, Stringable #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore] final protected function fromObject(mixed $parent = NULL): float|null|bool|int|array|string - { - $object = $parent ?? $this; + { + $object = $parent ?? $this; - if (is_scalar($object) || $object === NULL) - { - return $object; - } + if (is_scalar($object) || $object === NULL) + { + return $object; + } - $output = []; + $output = []; - foreach ($object as $key => $value) - { - $output[$key] = (is_scalar($value) || empty($value)) - ? $value - : $this->fromObject((array) $value); - } + foreach ($object as $key => $value) + { + $output[$key] = (is_scalar($value) || empty($value)) + ? $value + : $this->fromObject((array) $value); + } - return $output; - } + return $output; + } } diff --git a/src/Ion/Type/ArrayType.php b/src/Ion/Type/ArrayType.php index 4766c48f..27e3b712 100644 --- a/src/Ion/Type/ArrayType.php +++ b/src/Ion/Type/ArrayType.php @@ -65,14 +65,6 @@ class ArrayType 'pop' => 'array_pop', ]; - /** - * Create an ArrayType wrapper class from an array - */ - public static function from(array $arr): ArrayType - { - return new ArrayType($arr); - } - /** * Create an ArrayType wrapper class */ @@ -108,6 +100,14 @@ class ArrayType throw new InvalidArgumentException("Method '{$method}' does not exist"); } + /** + * Create an ArrayType wrapper class from an array + */ + public static function from(array $arr): ArrayType + { + return new ArrayType($arr); + } + /** * Does the passed key exist in the current array? */ diff --git a/src/Ion/Type/Stringy.php b/src/Ion/Type/Stringy.php index 2aab130a..5491b6db 100644 --- a/src/Ion/Type/Stringy.php +++ b/src/Ion/Type/Stringy.php @@ -41,7 +41,8 @@ use const MB_CASE_TITLE; /** * Vendored, slightly modernized version of Stringy */ -abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { +abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess +{ /** * An instance's string. */ @@ -80,10 +81,20 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { ); } - $this->str = (string)$str; + $this->str = (string) $str; $this->encoding = $encoding ?: mb_internal_encoding(); } + /** + * Returns the value in $str. + * + * @return string The current value of the $str property + */ + public function __toString(): string + { + return $this->str; + } + /** * Creates a Stringy object and assigns both str and encoding properties * the supplied values. $str is cast to a string prior to assignment, and if @@ -93,25 +104,15 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { * * @param mixed $str Value to modify, after being cast to string * @param string|null $encoding The character encoding - * @return static A Stringy object * @throws InvalidArgumentException if an array or object without a * __toString method is passed as the first argument + * @return static A Stringy object */ public static function create(mixed $str = '', ?string $encoding = NULL): self { return new static($str, $encoding); } - /** - * Returns the value in $str. - * - * @return string The current value of the $str property - */ - public function __toString(): string - { - return $this->str; - } - /** * Returns a new string with $string appended. * @@ -190,7 +191,7 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { $stringy->str = preg_replace_callback( '/[\d]+(.)?/u', - static fn($match) => mb_strtoupper($match[0], $encoding), + static fn ($match) => mb_strtoupper($match[0], $encoding), $stringy->str ); @@ -395,7 +396,7 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { $endOfStr = mb_strtolower($endOfStr, $this->encoding); } - return (string)$substring === $endOfStr; + return (string) $substring === $endOfStr; } /** @@ -585,8 +586,8 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { { return \mb_strpos( $this->str, - (string)$needle, - (int)$offset, + (string) $needle, + (int) $offset, $this->encoding ); } @@ -605,8 +606,8 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { { return mb_strrpos( $this->str, - (string)$needle, - (int)$offset, + (string) $needle, + (int) $offset, $this->encoding ); } @@ -813,7 +814,8 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { if ($char === mb_substr($otherStr, $i, 1, $encoding)) { $longestCommonPrefix .= $char; - } else + } + else { break; } @@ -842,7 +844,8 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { if ($char === mb_substr($otherStr, -$i, 1, $encoding)) { $longestCommonSuffix = $char . $longestCommonSuffix; - } else + } + else { break; } @@ -898,7 +901,8 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { $len = $table[$i][$j]; $end = $i; } - } else + } + else { $table[$i][$j] = 0; } @@ -941,7 +945,7 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { public function offsetExists(mixed $offset): bool { $length = $this->length(); - $offset = (int)$offset; + $offset = (int) $offset; if ($offset >= 0) { @@ -958,13 +962,13 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { * does not exist. * * @param mixed $offset The index from which to retrieve the char - * @return string The character at the specified index * @throws OutOfBoundsException If the positive or negative offset does * not exist + * @return string The character at the specified index */ public function offsetGet(mixed $offset): string { - $offset = (int)$offset; + $offset = (int) $offset; $length = $this->length(); if (($offset >= 0 && $length <= $offset) || $length < abs($offset)) @@ -1012,9 +1016,9 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { * @param int $length Desired string length after padding * @param string $padStr String used to pad, defaults to space * @param string $padType One of 'left', 'right', 'both' - * @return static Object with a padded $str * @throws /InvalidArgumentException If $padType isn't one of 'right', * 'left' or 'both' + * @return static Object with a padded $str */ public function pad(int $length, string $padStr = ' ', string $padType = 'right'): self { @@ -1313,7 +1317,7 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { $startOfStr = mb_strtolower($startOfStr, $this->encoding); } - return (string)$substring === $startOfStr; + return (string) $substring === $startOfStr; } /** @@ -1359,13 +1363,16 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { if ($end === NULL) { $length = $this->length(); - } elseif ($end >= 0 && $end <= $start) + } + elseif ($end >= 0 && $end <= $start) { return static::create('', $this->encoding); - } elseif ($end < 0) + } + elseif ($end < 0) { $length = $this->length() + $end - $start; - } else + } + else { $length = $end - $start; } @@ -1412,7 +1419,8 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { if ($functionExists) { $array = mb_split($pattern, $this->str, $limit); - } elseif ($this->supportsEncoding()) + } + elseif ($this->supportsEncoding()) { $array = \preg_split("/{$pattern}/", $this->str, $limit); } @@ -1549,7 +1557,7 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { $stringy = static::create($match[0], $encoding); - return (string)$stringy->toLowerCase()->upperCaseFirst(); + return (string) $stringy->toLowerCase()->upperCaseFirst(); }, $stringy->str ); @@ -1624,10 +1632,10 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { } if (is_numeric($this->str)) { - return (int)($this->str) > 0; + return (int) ($this->str) > 0; } - return (bool)$this->regexReplace('[[:space:]]', '')->str; + return (bool) $this->regexReplace('[[:space:]]', '')->str; } /** @@ -2024,7 +2032,7 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { ], ]; - $charsArray[$language] = isset($languageSpecific[$language]) ? $languageSpecific[$language] : []; + $charsArray[$language] = $languageSpecific[$language] ?? []; return $charsArray[$language]; } @@ -2104,7 +2112,7 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess { } if ($this->supportsEncoding()) { - $option = str_replace('r', '', (string)$option); + $option = str_replace('r', '', (string) $option); return \preg_replace("/{$pattern}/u{$option}", $replacement, $string); } diff --git a/tools/rector.php b/tools/rector.php index e7bf177b..8550f720 100644 --- a/tools/rector.php +++ b/tools/rector.php @@ -3,10 +3,6 @@ use Rector\CodeQuality\Rector\Class_\CompleteDynamicPropertiesRector; use Rector\CodeQuality\Rector\For_\{ForRepeatedCountToOwnVariableRector, ForToForeachRector}; use Rector\CodeQuality\Rector\If_\{ConsecutiveNullCompareReturnsToNullCoalesceQueueRector, SimplifyIfElseToTernaryRector, SimplifyIfReturnBoolRector}; -use Rector\CodingStyle\Rector\String_\SymplifyQuoteEscapeRector; -use Rector\Php74\Rector\Property\RestoreDefaultNullToNullableTypePropertyRector; -use Rector\Php81\Rector\Property\ReadOnlyPropertyRector; -use Rector\Set\ValueObject\LevelSetList; use Rector\CodeQuality\Rector\Ternary\{SimplifyTautologyTernaryRector, SwitchNegatedTernaryRector}; use Rector\CodingStyle\Rector\ArrowFunction\StaticArrowFunctionRector; use Rector\CodingStyle\Rector\Class_\AddArrayDefaultToArrayPropertyRector; @@ -19,6 +15,7 @@ use Rector\CodingStyle\Rector\FuncCall\ CountArrayToEmptyArrayComparisonRector, VersionCompareFuncCallToConstantRector}; use Rector\CodingStyle\Rector\Stmt\NewlineAfterStatementRector; +use Rector\CodingStyle\Rector\String_\SymplifyQuoteEscapeRector; use Rector\Config\RectorConfig; use Rector\DeadCode\Rector\ClassMethod\{RemoveUselessParamTagRector, RemoveUselessReturnTagRector}; use Rector\DeadCode\Rector\Foreach_\RemoveUnusedForeachKeyRector; @@ -26,7 +23,10 @@ use Rector\DeadCode\Rector\Property\RemoveUselessVarTagRector; use Rector\DeadCode\Rector\Switch_\RemoveDuplicatedCaseInSwitchRector; use Rector\EarlyReturn\Rector\Foreach_\ChangeNestedForeachIfsToEarlyContinueRector; use Rector\EarlyReturn\Rector\If_\{ChangeIfElseValueAssignToEarlyReturnRector, RemoveAlwaysElseRector}; +use Rector\Php74\Rector\Property\RestoreDefaultNullToNullableTypePropertyRector; +use Rector\Php81\Rector\Property\ReadOnlyPropertyRector; use Rector\PHPUnit\Set\PHPUnitSetList; +use Rector\Set\ValueObject\LevelSetList; use Rector\TypeDeclaration\Rector\ClassMethod\{AddMethodCallBasedStrictParamTypeRector, ParamTypeByMethodCallTypeRector, ParamTypeByParentCallTypeRector}; use Rector\TypeDeclaration\Rector\Closure\AddClosureReturnTypeRector; use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromAssignsRector; @@ -34,7 +34,7 @@ use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromAssignsRector; return static function (RectorConfig $config): void { // Import names with use statements $config->importNames(); - $config->importShortClasses(false); + $config->importShortClasses(FALSE); $config->sets([ LevelSetList::UP_TO_PHP_81,