diff --git a/composer.json b/composer.json index 85475cc..e82abff 100644 --- a/composer.json +++ b/composer.json @@ -33,7 +33,7 @@ "source": "https://github.com/voku/Stringy" }, "require": { - "php": ">=7.0.0", + "php": ">=8.1.0", "ext-json": "*", "defuse/php-encryption": "~2.0", "voku/arrayy": "~7.8", diff --git a/src/Create.php b/src/Create.php index 7399cc4..ebd9d88 100644 --- a/src/Create.php +++ b/src/Create.php @@ -14,7 +14,7 @@ * * @return Stringy A Stringy object */ - function create($str, string $encoding = null) + function create($str, ?string $encoding = null) { return new Stringy($str, $encoding); } diff --git a/src/StaticStringy.php b/src/StaticStringy.php index 424413d..969d8cd 100644 --- a/src/StaticStringy.php +++ b/src/StaticStringy.php @@ -8,102 +8,102 @@ * INFO: "Method Parameter Information" via PhpStorm | * https://www.jetbrains.com/phpstorm/help/viewing-method-parameter-information.html * - * @method static Stringy append(string $stringInput, string $stringAppend, string $encoding = null) + * @method static Stringy append(string $stringInput, string $stringAppend, ?string $encoding = null) * @method static Stringy appendPassword(string $stringInput, int $length) * @method static Stringy appendUniqueIdentifier(string $stringInput, string $extraPrefix = '') * @method static Stringy appendRandomString(string $stringInput, int $length, string $possibleChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') - * @method static Stringy at(string $stringInput, int $index, string $encoding = null) - * @method static Stringy between(string $stringInput, string $start, string $end, int $offset = 0, string $encoding = null) - * @method static Stringy camelize(string $stringInput, string $encoding = null) - * @method static string[] chars(string $stringInput, string $encoding = null) - * @method static Stringy collapseWhitespace(string $stringInput, string $encoding = null) - * @method static bool contains(string $stringInput, string $needle, bool $caseSensitive = true, string $encoding = null) - * @method static bool containsAll(string $stringInput, array $needle, bool $caseSensitive = true, string $encoding = null) - * @method static bool containsAny(string $stringInput, string $needle, bool $caseSensitive = true, string $encoding = null) - * @method static int count(string $stringInput, string $encoding = null) - * @method static int countSubstr(string $stringInput, string $substring, bool $caseSensitive = true, string $encoding = null) - * @method static Stringy dasherize(string $stringInput, string $encoding = null) - * @method static Stringy delimit(string $stringInput, string $delimiter, string $encoding = null) - * @method static bool endsWith(string $stringInput, string $substring, bool $caseSensitive = true, string $encoding = null) - * @method static Stringy ensureLeft(string $stringInput, string $substring, string $encoding = null) - * @method static Stringy ensureRight(string $stringInput, string $substring, string $encoding = null) - * @method static Stringy escape(string $stringInput, string $encoding = null) - * @method static Stringy extractText(string $stringInput, string $search = '', int $length = null, string $ellipsis = '...') - * @method static Stringy first(string $stringInput, int $n, string $encoding = null) - * @method static bool hasLowerCase(string $stringInput, string $encoding = null) - * @method static bool hasUpperCase(string $stringInput, string $encoding = null) - * @method static Stringy htmlDecode(string $stringInput, int $flags = ENT_COMPAT, string $encoding = null) - * @method static Stringy htmlEncode(string $stringInput, int $flags = ENT_COMPAT, string $encoding = null) - * @method static Stringy humanize(string $stringInput, string $encoding = null) - * @method static int|bool indexOf(string $stringInput, string $needle, int $offset = 0, string $encoding = null) - * @method static int|bool indexOfLast(string $stringInput, string $needle, int $offset = 0, string $encoding = null) - * @method static Stringy insert(string $stringInput, string $substring, int $index = 0, string $encoding = null) - * @method static bool is(string $stringInput, string $pattern, string $encoding = null) - * @method static bool isAlpha(string $stringInput, string $encoding = null) - * @method static bool isAlphanumeric(string $stringInput, string $encoding = null) - * @method static bool isBase64(string $stringInput, string $encoding = null) - * @method static bool isBlank(string $stringInput, string $encoding = null) - * @method static bool isHexadecimal(string $stringInput, string $encoding = null) - * @method static bool isHtml(string $stringInput, string $encoding = null) - * @method static bool isJson(string $stringInput, string $encoding = null) - * @method static bool isLowerCase(string $stringInput, string $encoding = null) - * @method static bool isSerialized(string $stringInput, string $encoding = null) - * @method static bool isUpperCase(string $stringInput, string $encoding = null) - * @method static Stringy last(string $stringInput, string $encoding = null) - * @method static int length(string $stringInput, string $encoding = null) + * @method static Stringy at(string $stringInput, int $index, ?string $encoding = null) + * @method static Stringy between(string $stringInput, string $start, string $end, int $offset = 0, ?string $encoding = null) + * @method static Stringy camelize(string $stringInput, ?string $encoding = null) + * @method static string[] chars(string $stringInput, ?string $encoding = null) + * @method static Stringy collapseWhitespace(string $stringInput, ?string $encoding = null) + * @method static bool contains(string $stringInput, string $needle, bool $caseSensitive = true, ?string $encoding = null) + * @method static bool containsAll(string $stringInput, array $needle, bool $caseSensitive = true, ?string $encoding = null) + * @method static bool containsAny(string $stringInput, string $needle, bool $caseSensitive = true, ?string $encoding = null) + * @method static int count(string $stringInput, ?string $encoding = null) + * @method static int countSubstr(string $stringInput, string $substring, bool $caseSensitive = true, ?string $encoding = null) + * @method static Stringy dasherize(string $stringInput, ?string $encoding = null) + * @method static Stringy delimit(string $stringInput, string $delimiter, ?string $encoding = null) + * @method static bool endsWith(string $stringInput, string $substring, bool $caseSensitive = true, ?string $encoding = null) + * @method static Stringy ensureLeft(string $stringInput, string $substring, ?string $encoding = null) + * @method static Stringy ensureRight(string $stringInput, string $substring, ?string $encoding = null) + * @method static Stringy escape(string $stringInput, ?string $encoding = null) + * @method static Stringy extractText(string $stringInput, string $search = '', ?int $length = null, string $ellipsis = '...') + * @method static Stringy first(string $stringInput, int $n, ?string $encoding = null) + * @method static bool hasLowerCase(string $stringInput, ?string $encoding = null) + * @method static bool hasUpperCase(string $stringInput, ?string $encoding = null) + * @method static Stringy htmlDecode(string $stringInput, int $flags = ENT_COMPAT, ?string $encoding = null) + * @method static Stringy htmlEncode(string $stringInput, int $flags = ENT_COMPAT, ?string $encoding = null) + * @method static Stringy humanize(string $stringInput, ?string $encoding = null) + * @method static int|bool indexOf(string $stringInput, string $needle, int $offset = 0, ?string $encoding = null) + * @method static int|bool indexOfLast(string $stringInput, string $needle, int $offset = 0, ?string $encoding = null) + * @method static Stringy insert(string $stringInput, string $substring, int $index = 0, ?string $encoding = null) + * @method static bool is(string $stringInput, string $pattern, ?string $encoding = null) + * @method static bool isAlpha(string $stringInput, ?string $encoding = null) + * @method static bool isAlphanumeric(string $stringInput, ?string $encoding = null) + * @method static bool isBase64(string $stringInput, ?string $encoding = null) + * @method static bool isBlank(string $stringInput, ?string $encoding = null) + * @method static bool isHexadecimal(string $stringInput, ?string $encoding = null) + * @method static bool isHtml(string $stringInput, ?string $encoding = null) + * @method static bool isJson(string $stringInput, ?string $encoding = null) + * @method static bool isLowerCase(string $stringInput, ?string $encoding = null) + * @method static bool isSerialized(string $stringInput, ?string $encoding = null) + * @method static bool isUpperCase(string $stringInput, ?string $encoding = null) + * @method static Stringy last(string $stringInput, ?string $encoding = null) + * @method static int length(string $stringInput, ?string $encoding = null) * @method static string lineWrapAfterWord(string $stringInput, int $limit) - * @method static Stringy[] lines(string $stringInput, string $encoding = null) - * @method static Stringy longestCommonPrefix(string $stringInput, string $otherStr, string $encoding = null) - * @method static Stringy longestCommonSuffix(string $stringInput, string $otherStr, string $encoding = null) - * @method static Stringy longestCommonSubstring(string $stringInput, string $otherStr, string $encoding = null) - * @method static Stringy lowerCaseFirst(string $stringInput, string $encoding = null) - * @method static bool offsetExists(string $stringInput, mixed $offset, string $encoding = null) - * @method static string offsetGet(string $stringInput, mixed $offset, string $encoding = null) - * @method static Stringy pad(string $stringInput, int $length, string $padStr = ' ', string $padType = 'right', string $encoding = null) - * @method static Stringy padBoth(string $stringInput, int $length, string $padStr = ' ', string $encoding = null) - * @method static Stringy padLeft(string $stringInput, int $length, string $padStr = ' ', string $encoding = null) - * @method static Stringy padRight(string $stringInput, int $length, string $padStr = ' ', string $encoding = null) - * @method static Stringy prepend(string $stringInput, string $string, string $encoding = null) + * @method static Stringy[] lines(string $stringInput, ?string $encoding = null) + * @method static Stringy longestCommonPrefix(string $stringInput, string $otherStr, ?string $encoding = null) + * @method static Stringy longestCommonSuffix(string $stringInput, string $otherStr, ?string $encoding = null) + * @method static Stringy longestCommonSubstring(string $stringInput, string $otherStr, ?string $encoding = null) + * @method static Stringy lowerCaseFirst(string $stringInput, ?string $encoding = null) + * @method static bool offsetExists(string $stringInput, mixed $offset, ?string $encoding = null) + * @method static string offsetGet(string $stringInput, mixed $offset, ?string $encoding = null) + * @method static Stringy pad(string $stringInput, int $length, string $padStr = ' ', string $padType = 'right', ?string $encoding = null) + * @method static Stringy padBoth(string $stringInput, int $length, string $padStr = ' ', ?string $encoding = null) + * @method static Stringy padLeft(string $stringInput, int $length, string $padStr = ' ', ?string $encoding = null) + * @method static Stringy padRight(string $stringInput, int $length, string $padStr = ' ', ?string $encoding = null) + * @method static Stringy prepend(string $stringInput, string $string, ?string $encoding = null) * @method static Stringy regexReplace(string $stringInput, string $pattern, string $replacement, string $delimiter = '/') - * @method static Stringy removeLeft(string $stringInput, string $substring, string $encoding = null) - * @method static Stringy removeRight(string $stringInput, string $substring, string $encoding = null) - * @method static Stringy removeHtml(string $stringInput, string $allowableTags = null, string $encoding = null) - * @method static Stringy removeXss(string $stringInput, string $encoding = null) - * @method static Stringy repeat(string $stringInput, int $multiplier, string $encoding = null) - * @method static Stringy replace(string $stringInput, string $search, string $replacement, bool $caseSensitive, string $encoding = null) - * @method static Stringy replaceAll(string $stringInput, array $search, string $replacement, bool $caseSensitive, string $encoding = null) - * @method static Stringy reverse(string $stringInput, string $encoding = null) - * @method static Stringy safeTruncate(string $stringInput, int $length, string $substring = '', string $encoding = null) - * @method static Stringy shuffle(string $stringInput, string $encoding = null) + * @method static Stringy removeLeft(string $stringInput, string $substring, ?string $encoding = null) + * @method static Stringy removeRight(string $stringInput, string $substring, ?string $encoding = null) + * @method static Stringy removeHtml(string $stringInput, ?string $allowableTags = null, ?string $encoding = null) + * @method static Stringy removeXss(string $stringInput, ?string $encoding = null) + * @method static Stringy repeat(string $stringInput, int $multiplier, ?string $encoding = null) + * @method static Stringy replace(string $stringInput, string $search, string $replacement, bool $caseSensitive, ?string $encoding = null) + * @method static Stringy replaceAll(string $stringInput, array $search, string $replacement, bool $caseSensitive, ?string $encoding = null) + * @method static Stringy reverse(string $stringInput, ?string $encoding = null) + * @method static Stringy safeTruncate(string $stringInput, int $length, string $substring = '', ?string $encoding = null) + * @method static Stringy shuffle(string $stringInput, ?string $encoding = null) * @method static Stringy shortenAfterWord(string $stringInput, int $length, string $strAddOn) - * @method static Stringy slugify(string $stringInput, string $separator = '-', string $language = 'en', array $replacements = [], string $encoding = null) + * @method static Stringy slugify(string $stringInput, string $separator = '-', string $language = 'en', array $replacements = [], ?string $encoding = null) * @method static Stringy stripeCssMediaQueries(string $stringInput) * @method static Stringy stripeEmptyHtmlTags(string $stringInput) * @method static Stringy utf8ify(string $stringInput) - * @method static Stringy snakeize(string $stringInput, string $encoding = null) - * @method static bool startsWith(string $stringInput, string $substring, bool $caseSensitive = true, string $encoding = null) - * @method static Stringy slice(string $stringInput, int $start, int $end = null, string $encoding = null) - * @method static Stringy[] split(string $stringInput, string $pattern, int $limit = null, string $encoding = null) - * @method static Stringy substr(string $stringInput, int $start, int $length = null, string $encoding = null) - * @method static Stringy surround(string $stringInput, string $substring, string $encoding = null) - * @method static Stringy swapCase(string $stringInput, string $encoding = null) - * @method static Stringy tidy(string $stringInput, string $encoding = null) - * @method static Stringy titleize(string $stringInput, string $encoding = null) + * @method static Stringy snakeize(string $stringInput, ?string $encoding = null) + * @method static bool startsWith(string $stringInput, string $substring, bool $caseSensitive = true, ?string $encoding = null) + * @method static Stringy slice(string $stringInput, int $start, ?int $end = null, ?string $encoding = null) + * @method static Stringy[] split(string $stringInput, string $pattern, ?int $limit = null, ?string $encoding = null) + * @method static Stringy substr(string $stringInput, int $start, ?int $length = null, ?string $encoding = null) + * @method static Stringy surround(string $stringInput, string $substring, ?string $encoding = null) + * @method static Stringy swapCase(string $stringInput, ?string $encoding = null) + * @method static Stringy tidy(string $stringInput, ?string $encoding = null) + * @method static Stringy titleize(string $stringInput, ?string $encoding = null) * @method static Stringy toAscii(string $stringInput) - * @method static Stringy toBoolean(string $stringInput, string $encoding = null) + * @method static Stringy toBoolean(string $stringInput, ?string $encoding = null) * @method static Stringy toString(string $stringInput) - * @method static Stringy toLowerCase(string $stringInput, string $encoding = null) - * @method static Stringy toSpaces(string $stringInput, int $tabLength = 4, string $encoding = null) - * @method static Stringy toTabs(string $stringInput, int $tabLength = 4, string $encoding = null) - * @method static Stringy toTitleCase(string $stringInput, string $encoding = null) - * @method static Stringy toUpperCase(string $stringInput, string $encoding = null) - * @method static Stringy trim(string $stringInput, string $chars = null, string $encoding = null) - * @method static Stringy trimLeft(string $stringInput, string $chars = null, string $encoding = null) - * @method static Stringy trimRight(string $stringInput, string $chars = null, string $encoding = null) - * @method static Stringy truncate(string $stringInput, int $length, string $substring = '', string $encoding = null) - * @method static Stringy underscored(string $stringInput, string $encoding = null) - * @method static Stringy upperCamelize(string $stringInput, string $encoding = null) - * @method static Stringy upperCaseFirst(string $stringInput, string $encoding = null) + * @method static Stringy toLowerCase(string $stringInput, ?string $encoding = null) + * @method static Stringy toSpaces(string $stringInput, int $tabLength = 4, ?string $encoding = null) + * @method static Stringy toTabs(string $stringInput, int $tabLength = 4, ?string $encoding = null) + * @method static Stringy toTitleCase(string $stringInput, ?string $encoding = null) + * @method static Stringy toUpperCase(string $stringInput, ?string $encoding = null) + * @method static Stringy trim(string $stringInput, ?string $chars = null, ?string $encoding = null) + * @method static Stringy trimLeft(string $stringInput, ?string $chars = null, ?string $encoding = null) + * @method static Stringy trimRight(string $stringInput, ?string $chars = null, ?string $encoding = null) + * @method static Stringy truncate(string $stringInput, int $length, string $substring = '', ?string $encoding = null) + * @method static Stringy underscored(string $stringInput, ?string $encoding = null) + * @method static Stringy upperCamelize(string $stringInput, ?string $encoding = null) + * @method static Stringy upperCaseFirst(string $stringInput, ?string $encoding = null) * * @deprecated

Please use e.g. (new Stringy('foo'))->upperCaseFirst() instead or write your own small wrapper, because I can't protect you from BC from new parameters, * if you use this class, thanks.

diff --git a/src/Stringy.php b/src/Stringy.php index df8eb5a..ba402d1 100644 --- a/src/Stringy.php +++ b/src/Stringy.php @@ -74,7 +74,7 @@ class Stringy implements \ArrayAccess, \Countable, \IteratorAggregate, \JsonSeri * * @psalm-mutation-free */ - public function __construct($str = '', string $encoding = null) + public function __construct($str = '', ?string $encoding = null) { /* @phpstan-ignore-next-line | always false in theory */ if (\is_array($str)) { @@ -598,7 +598,7 @@ public function beforeLastIgnoreCase(string $separator): self * @return static *

Object whose $str is a substring between $start and $end.

*/ - public function between(string $start, string $end, int $offset = null): self + public function between(string $start, string $end, ?int $offset = null): self { $str = $this->utf8::between( $this->str, @@ -954,7 +954,7 @@ public function crc32(): int *

A Stringy object.

* @phpstan-pure */ - public static function create($str = '', string $encoding = null): self + public static function create($str = '', ?string $encoding = null): self { return new static($str, $encoding); } @@ -1321,7 +1321,7 @@ public function explodeCollection(string $delimiter, int $limit = \PHP_INT_MAX): * * @return static */ - public function extractText(string $search = '', int $length = null, string $replacerForSkippedText = '…'): self + public function extractText(string $search = '', ?int $length = null, string $replacerForSkippedText = '…'): self { return static::create( $this->utf8::extract_text( @@ -2653,7 +2653,7 @@ public function lineWrap( int $limit, string $break = "\n", bool $add_final_break = true, - string $delimiter = null + ?string $delimiter = null ): self { return static::create( $this->utf8::wordwrap_per_line( @@ -2692,7 +2692,7 @@ public function lineWrapAfterWord( int $limit, string $break = "\n", bool $add_final_break = true, - string $delimiter = null + ?string $delimiter = null ): self { return static::create( $this->utf8::wordwrap_per_line( @@ -3822,7 +3822,7 @@ public function similarity(string $str): float * @return static *

Object with its $str being the extracted substring.

*/ - public function slice(int $start, int $end = null): self + public function slice(int $start, ?int $end = null): self { return static::create( $this->utf8::str_slice($this->str, $start, $end, $this->encoding), @@ -3963,7 +3963,7 @@ public function softWrap(int $width, string $break = "\n"): self * * @phpstan-return array */ - public function split(string $pattern, int $limit = null): array + public function split(string $pattern, ?int $limit = null): array { if ($this->str === '') { return []; @@ -4004,7 +4004,7 @@ public function split(string $pattern, int $limit = null): array * * @phpstan-return CollectionStringy */ - public function splitCollection(string $pattern, int $limit = null): CollectionStringy + public function splitCollection(string $pattern, ?int $limit = null): CollectionStringy { /** * @psalm-suppress ImpureMethodCall -> add more psalm stuff to the collection class @@ -4185,7 +4185,7 @@ static function (self $word) { * @return static *

Object with its $str being the substring.

*/ - public function substr(int $start, int $length = null): self + public function substr(int $start, ?int $length = null): self { return static::create( $this->utf8::substr( @@ -4213,7 +4213,7 @@ public function substr(int $start, int $length = null): self * * @return static */ - public function substring(int $start, int $length = null): self + public function substring(int $start, ?int $length = null): self { if ($length === null) { return $this->substr($start); @@ -4362,9 +4362,9 @@ public function tidy(): self *

Object with a titleized $str.

*/ public function titleize( - array $ignore = null, - string $word_define_chars = null, - string $language = null + ?array $ignore = null, + ?string $word_define_chars = null, + ?string $language = null ): self { return static::create( $this->utf8::str_titleize( @@ -4667,7 +4667,7 @@ public function toUpperCase($tryToKeepStringLength = false, $lang = null): self * @return static *

Object with a trimmed $str.

*/ - public function trim(string $chars = null): self + public function trim(?string $chars = null): self { return static::create( $this->utf8::trim($this->str, $chars), @@ -4691,7 +4691,7 @@ public function trim(string $chars = null): self * @return static *

Object with a trimmed $str.

*/ - public function trimLeft(string $chars = null): self + public function trimLeft(?string $chars = null): self { return static::create( $this->utf8::ltrim($this->str, $chars), @@ -4715,7 +4715,7 @@ public function trimLeft(string $chars = null): self * @return static *

Object with a trimmed $str.

*/ - public function trimRight(string $chars = null): self + public function trimRight(?string $chars = null): self { return static::create( $this->utf8::rtrim($this->str, $chars), @@ -5013,7 +5013,7 @@ public function utf8ify(): self public function words( string $char_list = '', bool $remove_empty_values = false, - int $remove_short_values = null + ?int $remove_short_values = null ): array { if ($remove_short_values === null) { $strings = $this->utf8::str_to_words( @@ -5063,7 +5063,7 @@ public function words( public function wordsCollection( string $char_list = '', bool $remove_empty_values = false, - int $remove_short_values = null + ?int $remove_short_values = null ): CollectionStringy { /** * @psalm-suppress ImpureMethodCall -> add more psalm stuff to the collection class