This commit is contained in:
2025-05-12 14:25:25 +02:00
parent ab2db755ef
commit 9e378ca2b7
2719 changed files with 46505 additions and 60181 deletions

0
vendor/nesbot/carbon/bin/carbon vendored Normal file → Executable file
View File

View File

@@ -53,7 +53,7 @@
"doctrine/orm": "^2.7 || ^3.0",
"friendsofphp/php-cs-fixer": "^3.0",
"kylekatarnls/multi-tester": "^2.0",
"ondrejmirtes/better-reflection": "*",
"ondrejmirtes/better-reflection": "<6",
"phpmd/phpmd": "^2.9",
"phpstan/extension-installer": "^1.0",
"phpstan/phpstan": "^0.12.99 || ^1.7.14",
@@ -92,8 +92,8 @@
},
"extra": {
"branch-alias": {
"dev-3.x": "3.x-dev",
"dev-master": "2.x-dev"
"dev-master": "3.x-dev",
"dev-2.x": "2.x-dev"
},
"laravel": {
"providers": [

View File

@@ -123,8 +123,8 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
<a title="Онлайн казино 777 Україна" href="https://777.ua/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Онлайн казино" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/7e572d50-1ce8-4d69-ae12-86cc80371373/ok-ua-777.png" width="64" height="64"></a>
<a title="#1 Guide To Online Gambling In Canada" href="https://casinohex.org/canada/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="CasinoHex Canada" src="https://opencollective-production.s3.us-west-1.amazonaws.com/79fdbcc0-a997-11eb-abbc-25e48b63c6dc.jpg" width="85" height="64"></a>
<a title="Znajdź najlepsze zakłady bukmacherskie w Polsce w 2023 roku. Probukmacher.pl to Twoje kompendium wiedzy na temat bukmacherów!" href="https://www.probukmacher.pl?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Probukmacher" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/caf50271-4560-4ffe-a434-ea15239168db/Screenshot_1.png" width="89" height="64"></a>
<a title="Gives a fun for our users" href="https://slotoking.ua/games/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Игровые автоматы" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/94601d07-3205-4c60-9c2d-9b8194dbefb7/skg-blue.png" width="64" height="64"></a>
<a title="Casino-portugal.pt" href="https://casino-portugal.pt/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Casino-portugal.pt" src="https://logo.clearbit.com/casino-portugal.pt" width="64" height="64"></a>
<a title="Gives a fun for our users" href="https://slotoking.ua/games/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Игровые автоматы" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/94601d07-3205-4c60-9c2d-9b8194dbefb7/skg-blue.png" width="64" height="64"></a>
<a title="Slots City® ➢ Лучшее лицензионно казино онлайн и оффлайн на гривны в Украине. 【 Более1500 игровых автоматов и слотов】✅ Официально и Безопасно" href="https://slotscity.ua/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Slots City" src="https://opencollective-production.s3.us-west-1.amazonaws.com/d7e298c0-7abe-11ed-8553-230872f5e54d.png" width="90" height="64"></a>
<a title="inkedin" href="https://inkedin.com?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="inkedin" src="https://logo.clearbit.com/inkedin.com" width="64" height="64"></a>
<a title="Актуальний та повносправний рейтинг онлайн казино України, ґрунтований на відгуках реальних гравців." href="https://uk.onlinecasino.in.ua/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Онлайн казино України" src="https://opencollective-production.s3.us-west-1.amazonaws.com/c0b4b090-eef8-11ec-9cb7-0527a205b226.png" width="64" height="64"></a>
@@ -133,6 +133,7 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
<a title="Real Money Pokies" href="https://www.nzfirst.org.nz/real-money-pokies/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Real Money Pokies" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/30d38232-a9d6-4e95-a48c-641fdc4d96fd/NZ_logo%20(6)%20(1)%20(1).jpg" width="64" height="64"></a>
<a title="Non GamStop Bookies UK" href="https://nongamstopbookies.com/uk/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Non GamStop Bookies UK" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/43c5561c-8907-4ef7-a4ee-c6da054788b8/logo-site%20(3).jpg" width="64" height="64"></a>
<a title="Актуальний топ-рейтинг українських онлайн казино на гривні! Щоденне оновлення топу та унікальна система ранжування, основана на відгуках гравців!" href="https://onlinecasino.in.ua/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Онлайн Казино Украины" src="https://opencollective-production.s3.us-west-1.amazonaws.com/8fdd8aa0-e273-11ec-a95e-d38fd331cabf.png" width="64" height="64"></a>
<a title="Twitter Video Downloader HD Tool allows you to store tweets on your device (mobile or PC) for free." href="https://ssstwitter.online/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="SSSTwitter" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/ba0d1daf-a894-4d98-95f7-a44d321364b3/Screenshot%202024-01-16%20at%2011.43.22.png" width="76" height="64"></a>
<a title="Entertainment" href="https://www.nongamstopbets.com/casinos-not-on-gamstop/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Non-GamStop Bets UK" src="https://logo.clearbit.com/nongamstopbets.com" width="64" height="64"></a>
<a title="Chudovo - international software development company with representative offices in Kyiv, Cologne, New York, Tallinn and London. It has been working on the market since 2006. Company has domain expertise in video security, logistics, medicine, finance and" href="https://chudovo.com/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Chudovo" src="https://opencollective-production.s3.us-west-1.amazonaws.com/326c19a0-2e87-11eb-a13a-c99a2a201d11.png" width="84" height="42"></a>
<a title="Entertainment" href="https://casinogap.org/uk/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="UK Casino Gap" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/143f9301-beec-4118-89d5-9a07a01345f3/casinogap-uk.png" width="42" height="42"></a>
@@ -141,9 +142,11 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
<a title="Siti Non AAMS" href="https://www.outlookindia.com/outlook-spotlight/migliori-siti-non-aams-siti-scommesse-senza-licenza-sicuri-news-294715?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Migliori Siti Non AAMS" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/392810da-6cb6-4938-a3cb-38bd0e1eb7de/migliori-siti-non-aams.png" width="42" height="42"></a>
<a title="List of trusted non GamStop casino reviews" href="https://nongamstopcasinos.org?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="UK NonGamStopCasinos" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/cbda0ee1-26ea-4252-9580-f1f9b317b1f7/nongamstopcasinos-uk.png" width="42" height="42"></a>
<a title="Online TikTok Video Download Tool" href="https://snaptik.pro?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="SnapTik" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/546bcd53-6615-457d-ab21-1db1c52b3af5/logo.jpg" width="42" height="42"></a>
<a title="IG Downloader is an Instagram Downloader service that offers a variety of tools to download Instagram content for free. Listed below are all the tools" href="https://indownloader.app/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="IG Downloader" src="https://logo.clearbit.com/indownloader.app" width="42" height="42"></a>
<a title="Proxidize is a mobile proxy creation and management platform that provides all needed components from hardware to cloud software and SIM cards." href="https://proxidize.com/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Proxidize" src="https://logo.clearbit.com/proxidize.com" width="42" height="42"></a>
<a title="A self-hosted web radio management suite, including turnkey installer tools and an easy-to-use web app to manage your stations. " href="https://azuracast.com?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="AzuraCast" src="https://opencollective-production.s3.us-west-1.amazonaws.com/3c12ea10-cdfb-11eb-9cf4-3760b386b76d.png" width="42" height="42"></a>
<a title="IG Downloader is an Instagram Downloader service that offers a variety of tools to download Instagram content for free. Listed below are all the tools" href="https://indownloader.app/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="IG Downloader" src="https://logo.clearbit.com/indownloader.app" width="42" height="42"></a>
<a title="Buy Instagram Likes - Real Likes &amp; Instant Delivery!" href="https://blastup.com/buy-instagram-likes?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Blastup" src="https://opencollective-production.s3.us-west-1.amazonaws.com/account-avatar/955a0beb-9fe8-4753-ad92-fae8ef5382fc/favicon--dark.jpg" width="42" height="42"></a>
<a title="We will boost your Social Media Likes, Followers , Comments &amp; Views. 24/7 hour support. Privacy Assured." href="https://organicsocialboost.com/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Organic Social Boost" src="https://logo.clearbit.com/organicsocialboost.com" width="84" height="42"></a>
<a title="A self-hosted web radio management suite, including turnkey installer tools and an easy-to-use web app to manage your stations." href="https://azuracast.com/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="AzuraCast" src="https://opencollective-production.s3.us-west-1.amazonaws.com/3c12ea10-cdfb-11eb-9cf4-3760b386b76d.png" width="42" height="42"></a>
<a title="Triplebyte is the first software engineering job platform that is on the developer&#039;s side. Take our coding quiz!" href="https://triplebyte.com/os/opencollective?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Triplebyte" src="https://opencollective-production.s3.us-west-1.amazonaws.com/43e4f9d0-30cd-11ea-9c6b-e1142996e8b2.png" width="42" height="42"></a>
<a title="Connect your Collective to GitHub Sponsors: https://docs.opencollective.com/help/collectives/github-sponsors" href="https://github.com/sponsors/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="GitHub Sponsors" src="https://opencollective-production.s3.us-west-1.amazonaws.com/87b1d240-f617-11ea-9960-fd7e8ab20fe4.png" width="48" height="42"></a>
<a title="Salesforce" href="https://engineering.salesforce.com?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img alt="Salesforce" src="https://opencollective-production.s3.us-west-1.amazonaws.com/24d34880-df8d-11e9-949c-6bc2037b6bd5.png" width="42" height="42"></a>

View File

@@ -26,6 +26,15 @@ function getMaxHistoryMonthsByAmount($amount): int
return 2;
}
function getHtmlAttribute($rawValue): string
{
return str_replace(
['', "\r"],
'',
trim(htmlspecialchars((string) $rawValue), "  \n\r\t\v\0"),
);
}
function getOpenCollectiveSponsors(): string
{
$customSponsorImages = [
@@ -102,8 +111,8 @@ function getOpenCollectiveSponsors(): string
$height = $member['status'] === 'sponsor' ? 64 : 42;
$width = min($height * 2, $validImage ? round($x * $height / $y) : $height);
$href .= (strpos($href, '?') === false ? '?' : '&amp;').'utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon';
$title = htmlspecialchars(($member['description'] ?? null) ?: $member['name']);
$alt = htmlspecialchars($member['name']);
$title = getHtmlAttribute(($member['description'] ?? null) ?: $member['name']);
$alt = getHtmlAttribute($member['name']);
return "\n".'<a title="'.$title.'" href="'.$href.'" target="_blank">'.
'<img alt="'.$alt.'" src="'.$src.'" width="'.$width.'" height="'.$height.'">'.

View File

@@ -78,7 +78,7 @@ abstract class AbstractTranslator extends Translation\Translator
return static::$singletons[$key];
}
public function __construct($locale, MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false)
public function __construct($locale, ?MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false)
{
parent::setLocale($locale);
$this->initializing = true;
@@ -159,8 +159,10 @@ abstract class AbstractTranslator extends Translation\Translator
return true;
}
$this->assertValidLocale($locale);
foreach ($this->getDirectories() as $directory) {
$data = @include sprintf('%s/%s.php', rtrim($directory, '\\/'), $locale);
$data = @include \sprintf('%s/%s.php', rtrim($directory, '\\/'), $locale);
if ($data !== false) {
$this->messages[$locale] = $data;

View File

@@ -1162,6 +1162,7 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable
*
* @return static
*/
#[ReturnTypeWillChange]
public static function createFromTimestamp($timestamp, $tz = null);
/**

View File

@@ -980,7 +980,7 @@ class CarbonInterval extends DateInterval implements CarbonConverterInterface
default:
throw new InvalidIntervalException(
sprintf('Invalid part %s in definition %s', $part, $intervalDefinition)
\sprintf('Invalid part %s in definition %s', $part, $intervalDefinition)
);
}
}
@@ -2329,7 +2329,7 @@ class CarbonInterval extends DateInterval implements CarbonConverterInterface
$seconds = abs($interval->s);
if ($microseconds && $interval->f > 0) {
$seconds = sprintf('%d.%06d', $seconds, abs($interval->f) * 1000000);
$seconds = \sprintf('%d.%06d', $seconds, abs($interval->f) * 1000000);
}
$time = array_filter([

View File

@@ -526,7 +526,7 @@ class CarbonPeriod implements Iterator, Countable, JsonSerializable
}
/**
* Add missing parts of the target date from the soure date.
* Add missing parts of the target date from the source date.
*
* @param string $source
* @param string $target
@@ -1017,7 +1017,7 @@ class CarbonPeriod implements Iterator, Countable, JsonSerializable
*
* @return CarbonInterface
*/
public function getStartDate(string $rounding = null)
public function getStartDate(?string $rounding = null)
{
$date = $this->startDate->avoidMutation();
@@ -1031,7 +1031,7 @@ class CarbonPeriod implements Iterator, Countable, JsonSerializable
*
* @return CarbonInterface|null
*/
public function getEndDate(string $rounding = null)
public function getEndDate(?string $rounding = null)
{
if (!$this->endDate) {
return null;
@@ -1899,7 +1899,7 @@ class CarbonPeriod implements Iterator, Countable, JsonSerializable
*
* @return CarbonInterface
*/
public function calculateEnd(string $rounding = null)
public function calculateEnd(?string $rounding = null)
{
if ($end = $this->getEndDate($rounding)) {
return $end;
@@ -2034,7 +2034,7 @@ class CarbonPeriod implements Iterator, Countable, JsonSerializable
/**
* Determines if the instance is equal to another.
* Warning: if options differ, instances wil never be equal.
* Warning: if options differ, instances will never be equal.
*
* @param mixed $period
*
@@ -2049,7 +2049,7 @@ class CarbonPeriod implements Iterator, Countable, JsonSerializable
/**
* Determines if the instance is equal to another.
* Warning: if options differ, instances wil never be equal.
* Warning: if options differ, instances will never be equal.
*
* @param mixed $period
*
@@ -2072,7 +2072,7 @@ class CarbonPeriod implements Iterator, Countable, JsonSerializable
/**
* Determines if the instance is not equal to another.
* Warning: if options differ, instances wil never be equal.
* Warning: if options differ, instances will never be equal.
*
* @param mixed $period
*
@@ -2087,7 +2087,7 @@ class CarbonPeriod implements Iterator, Countable, JsonSerializable
/**
* Determines if the instance is not equal to another.
* Warning: if options differ, instances wil never be equal.
* Warning: if options differ, instances will never be equal.
*
* @param mixed $period
*

View File

@@ -155,7 +155,7 @@ class CarbonTimeZone extends DateTimeZone
*
* @return string
*/
public function toOffsetName(DateTimeInterface $date = null)
public function toOffsetName(?DateTimeInterface $date = null)
{
return static::getOffsetNameFromMinuteOffset(
$this->getOffset($date ?: Carbon::now($this)) / 60
@@ -169,7 +169,7 @@ class CarbonTimeZone extends DateTimeZone
*
* @return CarbonTimeZone
*/
public function toOffsetTimeZone(DateTimeInterface $date = null)
public function toOffsetTimeZone(?DateTimeInterface $date = null)
{
return new static($this->toOffsetName($date));
}
@@ -185,7 +185,7 @@ class CarbonTimeZone extends DateTimeZone
*
* @return string|false
*/
public function toRegionName(DateTimeInterface $date = null, $isDst = 1)
public function toRegionName(?DateTimeInterface $date = null, $isDst = 1)
{
$name = $this->getName();
$firstChar = substr($name, 0, 1);
@@ -227,7 +227,7 @@ class CarbonTimeZone extends DateTimeZone
*
* @return CarbonTimeZone|false
*/
public function toRegionTimeZone(DateTimeInterface $date = null)
public function toRegionTimeZone(?DateTimeInterface $date = null)
{
$tz = $this->toRegionName($date);

View File

@@ -29,7 +29,7 @@ class BadComparisonUnitException extends UnitException
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($unit, $code = 0, Throwable $previous = null)
public function __construct($unit, $code = 0, ?Throwable $previous = null)
{
$this->unit = $unit;

View File

@@ -30,11 +30,11 @@ class BadFluentConstructorException extends BaseBadMethodCallException implement
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($method, $code = 0, Throwable $previous = null)
public function __construct($method, $code = 0, ?Throwable $previous = null)
{
$this->method = $method;
parent::__construct(sprintf("Unknown fluent constructor '%s'.", $method), $code, $previous);
parent::__construct(\sprintf("Unknown fluent constructor '%s'.", $method), $code, $previous);
}
/**

View File

@@ -30,11 +30,11 @@ class BadFluentSetterException extends BaseBadMethodCallException implements Bad
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($setter, $code = 0, Throwable $previous = null)
public function __construct($setter, $code = 0, ?Throwable $previous = null)
{
$this->setter = $setter;
parent::__construct(sprintf("Unknown fluent setter '%s'", $setter), $code, $previous);
parent::__construct(\sprintf("Unknown fluent setter '%s'", $setter), $code, $previous);
}
/**

View File

@@ -30,7 +30,7 @@ class ImmutableException extends BaseRuntimeException implements RuntimeExceptio
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($value, $code = 0, Throwable $previous = null)
public function __construct($value, $code = 0, ?Throwable $previous = null)
{
$this->value = $value;
parent::__construct("$value is immutable.", $code, $previous);

View File

@@ -38,7 +38,7 @@ class InvalidDateException extends BaseInvalidArgumentException implements Inval
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($field, $value, $code = 0, Throwable $previous = null)
public function __construct($field, $value, $code = 0, ?Throwable $previous = null)
{
$this->field = $field;
$this->value = $value;

View File

@@ -31,11 +31,11 @@ class NotACarbonClassException extends BaseInvalidArgumentException implements I
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($className, $code = 0, Throwable $previous = null)
public function __construct($className, $code = 0, ?Throwable $previous = null)
{
$this->className = $className;
parent::__construct(sprintf('Given class does not implement %s: %s', CarbonInterface::class, $className), $code, $previous);
parent::__construct(\sprintf('Given class does not implement %s: %s', CarbonInterface::class, $className), $code, $previous);
}
/**

View File

@@ -23,7 +23,7 @@ class NotLocaleAwareException extends BaseInvalidArgumentException implements In
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($object, $code = 0, Throwable $previous = null)
public function __construct($object, $code = 0, ?Throwable $previous = null)
{
$dump = \is_object($object) ? \get_class($object) : \gettype($object);

View File

@@ -57,7 +57,7 @@ class OutOfRangeException extends BaseInvalidArgumentException implements Invali
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($unit, $min, $max, $value, $code = 0, Throwable $previous = null)
public function __construct($unit, $min, $max, $value, $code = 0, ?Throwable $previous = null)
{
$this->unit = $unit;
$this->min = $min;

View File

@@ -45,7 +45,7 @@ class ParseErrorException extends BaseInvalidArgumentException implements Invali
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($expected, $actual, $help = '', $code = 0, Throwable $previous = null)
public function __construct($expected, $actual, $help = '', $code = 0, ?Throwable $previous = null)
{
$this->expected = $expected;
$this->actual = $actual;

View File

@@ -29,7 +29,7 @@ class UnitNotConfiguredException extends UnitException
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($unit, $code = 0, Throwable $previous = null)
public function __construct($unit, $code = 0, ?Throwable $previous = null)
{
$this->unit = $unit;

View File

@@ -30,7 +30,7 @@ class UnknownGetterException extends BaseInvalidArgumentException implements Inv
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($getter, $code = 0, Throwable $previous = null)
public function __construct($getter, $code = 0, ?Throwable $previous = null)
{
$this->getter = $getter;

View File

@@ -30,7 +30,7 @@ class UnknownMethodException extends BaseBadMethodCallException implements BadMe
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($method, $code = 0, Throwable $previous = null)
public function __construct($method, $code = 0, ?Throwable $previous = null)
{
$this->method = $method;

View File

@@ -30,7 +30,7 @@ class UnknownSetterException extends BaseInvalidArgumentException implements Bad
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($setter, $code = 0, Throwable $previous = null)
public function __construct($setter, $code = 0, ?Throwable $previous = null)
{
$this->setter = $setter;

View File

@@ -29,7 +29,7 @@ class UnknownUnitException extends UnitException
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($unit, $code = 0, Throwable $previous = null)
public function __construct($unit, $code = 0, ?Throwable $previous = null)
{
$this->unit = $unit;

View File

@@ -266,7 +266,7 @@ class Factory
return $this;
}
public function className(string $className = null)
public function className(?string $className = null)
{
return $className === null ? $this->getClassName() : $this->setClassName($className);
}
@@ -283,7 +283,7 @@ class Factory
return $this;
}
public function settings(array $settings = null)
public function settings(?array $settings = null)
{
return $settings === null ? $this->getSettings() : $this->setSettings($settings);
}

View File

@@ -55,7 +55,7 @@ $processHoursFunction = function (CarbonInterface $date, string $format) {
*/
return [
'year' => ':count рік|:count роки|:count років',
'y' => ':countр',
'y' => ':countр|:countрр|:countрр',
'a_year' => '{1}рік|:count рік|:count роки|:count років',
'month' => ':count місяць|:count місяці|:count місяців',
'm' => ':countм',

View File

@@ -994,6 +994,10 @@ trait Comparison
return $this->year === (int) $tester;
}
if (preg_match('/^(?:Jan|January|Feb|February|Mar|March|Apr|April|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December)$/i', $tester)) {
return $this->isSameMonth(static::parse($tester), false);
}
if (preg_match('/^\d{3,}-\d{1,2}$/', $tester)) {
return $this->isSameMonth(static::parse($tester));
}

View File

@@ -422,7 +422,7 @@ trait Creator
}
$second = ($second < 10 ? '0' : '').number_format($second, 6);
$instance = static::rawCreateFromFormat('!Y-n-j G:i:s.u', sprintf('%s-%s-%s %s:%02s:%02s', $year, $month, $day, $hour, $minute, $second), $tz);
$instance = static::rawCreateFromFormat('!Y-n-j G:i:s.u', \sprintf('%s-%s-%s %s:%02s:%02s', $year, $month, $day, $hour, $minute, $second), $tz);
if ($fixYear !== null) {
$instance = $instance->addYears($fixYear);

View File

@@ -939,7 +939,7 @@ trait Date
return $this->hour ?: 24;
// @property int
case $name === 'milliseconds':
// @property int
// @property int
case $name === 'millisecond':
// @property int
case $name === 'milli':
@@ -1132,7 +1132,7 @@ trait Date
public function set($name, $value = null)
{
if ($this->isImmutable()) {
throw new ImmutableException(sprintf('%s class', static::class));
throw new ImmutableException(\sprintf('%s class', static::class));
}
if (\is_array($name)) {
@@ -1391,7 +1391,7 @@ trait Date
*
* @return int
*/
public function getDaysFromStartOfWeek(int $weekStartsAt = null): int
public function getDaysFromStartOfWeek(?int $weekStartsAt = null): int
{
$firstDay = (int) ($weekStartsAt ?? $this->getTranslationMessage('first_day_of_week') ?? 0);
@@ -1409,7 +1409,7 @@ trait Date
*
* @return static
*/
public function setDaysFromStartOfWeek(int $numberOfDays, int $weekStartsAt = null)
public function setDaysFromStartOfWeek(int $numberOfDays, ?int $weekStartsAt = null)
{
return $this->addDays($numberOfDays - $this->getDaysFromStartOfWeek($weekStartsAt));
}
@@ -1478,7 +1478,7 @@ trait Date
*
* @return int|static
*/
public function utcOffset(int $minuteOffset = null)
public function utcOffset(?int $minuteOffset = null)
{
if (\func_num_args() < 1) {
return $this->offsetMinutes;
@@ -2453,7 +2453,7 @@ trait Date
}
}
if (static::isStrictModeEnabled()) {
throw new UnknownMethodException(sprintf('%s::%s', static::class, $method));
throw new UnknownMethodException(\sprintf('%s::%s', static::class, $method));
}
return null;

View File

@@ -444,7 +444,7 @@ trait Localization
*
* @return $this|string
*/
public function locale(string $locale = null, ...$fallbackLocales)
public function locale(?string $locale = null, ...$fallbackLocales)
{
if ($locale === null) {
return $this->getTranslatorLocale();

View File

@@ -96,9 +96,9 @@ trait Options
'v' => '([0-9]{1,3})',
'e' => '([a-zA-Z]{1,5})|([a-zA-Z]*\\/[a-zA-Z]*)',
'I' => '(0|1)',
'O' => '([+-](1[012]|0[0-9])[0134][05])',
'P' => '([+-](1[012]|0[0-9]):[0134][05])',
'p' => '(Z|[+-](1[012]|0[0-9]):[0134][05])',
'O' => '([+-](1[0123]|0[0-9])[0134][05])',
'P' => '([+-](1[0123]|0[0-9]):[0134][05])',
'p' => '(Z|[+-](1[0123]|0[0-9]):[0134][05])',
'T' => '([a-zA-Z]{1,5})',
'Z' => '(-?[1-5]?[0-9]{1,4})',
'U' => '([0-9]*)',

View File

@@ -200,7 +200,7 @@ trait Test
: $testInstance->format(static::MOCK_DATETIME_FORMAT);
}
private static function setDefaultTimezone($timezone, DateTimeInterface $date = null)
private static function setDefaultTimezone($timezone, ?DateTimeInterface $date = null)
{
$previous = null;
$success = false;

View File

@@ -26,6 +26,7 @@ trait Timestamp
*
* @return static
*/
#[\ReturnTypeWillChange]
public static function createFromTimestamp($timestamp, $tz = null)
{
return static::createFromTimestampUTC($timestamp)->setTimezone($tz);

View File

@@ -20,7 +20,7 @@ class TranslatorImmutable extends Translator
/** @var bool */
private $constructed = false;
public function __construct($locale, MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false)
public function __construct($locale, ?MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false)
{
parent::__construct($locale, $formatter, $cacheDir, $debug);
$this->constructed = true;