Skip to content

Commit 5b54dc1

Browse files
authored
Upgrade to PHP 8.1 (#11)
1 parent 8977917 commit 5b54dc1

12 files changed

Lines changed: 95 additions & 90 deletions

.github/workflows/ci.yaml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ jobs:
2424
steps:
2525
- name: 'Checkout Code'
2626
uses: actions/checkout@v2
27+
28+
- name: 'Setup PHP'
29+
uses: shivammathur/setup-php@v2
30+
with:
31+
php-version: 8.1
32+
ini-values: memory_limit=-1
33+
coverage: none
34+
tools: composer:v2
2735

2836
- name: 'Install Dependencies'
2937
run: composer install --prefer-dist --no-progress --no-interaction
@@ -41,7 +49,7 @@ jobs:
4149
- name: 'Setup PHP'
4250
uses: shivammathur/setup-php@v2
4351
with:
44-
php-version: 8.0
52+
php-version: 8.1
4553
ini-values: memory_limit=-1
4654
coverage: none
4755
tools: composer:v2
@@ -66,7 +74,7 @@ jobs:
6674
- name: 'Setup PHP'
6775
uses: shivammathur/setup-php@v2
6876
with:
69-
php-version: 8.0
77+
php-version: 8.1
7078
ini-values: memory_limit=-1
7179
coverage: none
7280
tools: composer:v2
@@ -86,9 +94,7 @@ jobs:
8694
fail-fast: false
8795
matrix:
8896
php-version:
89-
- '7.3'
90-
- '7.4'
91-
- '8.0'
97+
- '8.1'
9298
steps:
9399
- name: 'Checkout Code'
94100
uses: actions/checkout@v2
@@ -121,7 +127,7 @@ jobs:
121127
- name: 'Setup PHP'
122128
uses: shivammathur/setup-php@v2
123129
with:
124-
php-version: 7.4
130+
php-version: 8.1
125131
ini-values: memory_limit=-1
126132
coverage: pcov
127133
tools: composer:v2

.styleci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
preset: recommended
22

3+
version: 8.1
4+
35
enabled:
46
- combine_consecutive_unsets
57
- linebreak_after_opening_tag

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
## Requirements
1515

16-
* PHP 7.3, 7.4, 8.0
16+
* PHP 8.1
1717

1818
## Installation 🌱
1919

composer.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@
1717
"issues": "https://github.com/fre5h/datetime-php/issues"
1818
},
1919
"require": {
20-
"php": ">=7.3.0"
20+
"php": ">=8.1"
2121
},
2222
"require-dev": {
23-
"friendsofphp/php-cs-fixer": "^2.18",
24-
"phpstan/phpstan": "^0.12",
25-
"phpstan/phpstan-phpunit": "^0.12",
23+
"friendsofphp/php-cs-fixer": "^3.3",
24+
"phpstan/phpstan": "^1.2.0",
25+
"phpstan/phpstan-phpunit": "^1.0.0",
2626
"phpunit/phpunit": "^9.5",
27-
"slam/phpstan-extensions": "^5.0",
28-
"squizlabs/php_codesniffer": "^3.5",
29-
"thecodingmachine/phpstan-strict-rules": "^0.12"
27+
"slam/phpstan-extensions": "^6.0",
28+
"squizlabs/php_codesniffer": "^3.6",
29+
"thecodingmachine/phpstan-strict-rules": "^1.0.0"
3030
},
3131
"autoload": {
3232
"psr-4": {

phpstan.neon

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ includes:
33
- 'vendor/phpstan/phpstan-phpunit/rules.neon'
44
- 'vendor/slam/phpstan-extensions/conf/slam-rules.neon'
55
parameters:
6-
level: 8
7-
excludes_analyse:
6+
level: 9
7+
excludePaths:
88
- '%rootDir%/../../../tests/*'
99
- '%rootDir%/../../../vendor/*'
1010
fileExtensions:

src/DateRange.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,9 @@ final class DateRange implements DateRangeInterface
2323
{
2424
private const INTERNAL_DATE_FORMAT = 'Y-m-d';
2525

26-
/** @var \DateTimeImmutable */
27-
private $since;
26+
private readonly \DateTimeImmutable $since;
2827

29-
/** @var \DateTimeImmutable */
30-
private $till;
28+
private readonly \DateTimeImmutable $till;
3129

3230
/**
3331
* @param \DateTimeInterface $since

src/DateTimeCloner.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,11 @@ class DateTimeCloner
3232
*/
3333
public static function cloneIntoDateTime(\DateTimeInterface $originalDate): \DateTime
3434
{
35+
$timezone = $originalDate->getTimezone();
3536
$date = \DateTime::createFromFormat(
3637
self::DATE_FORMAT_FOR_CLONE,
3738
$originalDate->format(self::DATE_FORMAT_FOR_CLONE),
38-
$originalDate->getTimezone()
39+
$timezone instanceof \DateTimeZone ? $timezone : null
3940
);
4041

4142
if (!$date instanceof \DateTime) {
@@ -54,10 +55,11 @@ public static function cloneIntoDateTime(\DateTimeInterface $originalDate): \Dat
5455
*/
5556
public static function cloneIntoDateTimeImmutable(\DateTimeInterface $originalDate): \DateTimeImmutable
5657
{
58+
$timezone = $originalDate->getTimezone();
5759
$date = \DateTimeImmutable::createFromFormat(
5860
self::DATE_FORMAT_FOR_CLONE,
5961
$originalDate->format(self::DATE_FORMAT_FOR_CLONE),
60-
$originalDate->getTimezone()
62+
$timezone instanceof \DateTimeZone ? $timezone : null
6163
);
6264

6365
if (!$date instanceof \DateTimeImmutable) {

src/DateTimeHelper.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,10 @@ class DateTimeHelper implements DateTimeHelperInterface
2121
{
2222
private const INTERNAL_DATE_FORMAT = 'Y-m-d';
2323

24-
/** @var mixed[] */
25-
private $datesCache = [];
24+
/** @var array<string, \DateTimeInterface[]> */
25+
private array $datesCache = [];
2626

27-
/** @var \DateTimeZone|null */
28-
private $timeZoneUtc;
27+
private ?\DateTimeZone $timeZoneUtc = null;
2928

3029
/**
3130
* {@inheritdoc}
@@ -104,6 +103,7 @@ public function getDatesFromDateRangeAsArrayOfObjects(DateRangeInterface $dateRa
104103
$datesAsObjects = [];
105104
$period = new \DatePeriod($since, new \DateInterval('P1D'), $till);
106105
foreach ($period as $date) {
106+
/** @var \DateTimeInterface $date */
107107
$datesAsObjects[] = $date;
108108
}
109109

src/DateTimeRange.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,9 @@
2121
*/
2222
final class DateTimeRange implements DateTimeRangeInterface
2323
{
24-
/** @var \DateTimeImmutable */
25-
private $since;
24+
private readonly \DateTimeImmutable $since;
2625

27-
/** @var \DateTimeImmutable */
28-
private $till;
26+
private readonly \DateTimeImmutable $till;
2927

3028
/**
3129
* @param \DateTimeInterface $since

src/TimeConstants.php

Lines changed: 56 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -19,64 +19,64 @@
1919
*/
2020
final class TimeConstants
2121
{
22-
public const NUMBER_OF_MILLISECONDS_IN_A_SECOND = 1000;
23-
public const NUMBER_OF_SECONDS_IN_A_MINUTE = 60;
24-
public const NUMBER_OF_MINUTES_IN_AN_HOUR = 60;
25-
public const NUMBER_OF_SECONDS_IN_AN_HOUR = self::NUMBER_OF_SECONDS_IN_A_MINUTE * self::NUMBER_OF_MINUTES_IN_AN_HOUR;
26-
public const NUMBER_OF_HOURS_IN_A_DAY = 24;
27-
public const NUMBER_OF_SECONDS_IN_A_DAY = self::NUMBER_OF_HOURS_IN_A_DAY * self::NUMBER_OF_SECONDS_IN_AN_HOUR;
22+
final public const NUMBER_OF_MILLISECONDS_IN_A_SECOND = 1000;
23+
final public const NUMBER_OF_SECONDS_IN_A_MINUTE = 60;
24+
final public const NUMBER_OF_MINUTES_IN_AN_HOUR = 60;
25+
final public const NUMBER_OF_SECONDS_IN_AN_HOUR = self::NUMBER_OF_SECONDS_IN_A_MINUTE * self::NUMBER_OF_MINUTES_IN_AN_HOUR;
26+
final public const NUMBER_OF_HOURS_IN_A_DAY = 24;
27+
final public const NUMBER_OF_SECONDS_IN_A_DAY = self::NUMBER_OF_HOURS_IN_A_DAY * self::NUMBER_OF_SECONDS_IN_AN_HOUR;
2828

29-
public const NUMBER_OF_DAYS_IN_A_WEEK = 7;
30-
public const NUMBER_OF_MONTHS_IN_A_YEAR = 12;
31-
public const NUMBER_OF_DAYS_IN_A_YEAR = 365;
32-
public const NUMBER_OF_DAYS_IN_A_LEAP_YEAR = 366;
29+
final public const NUMBER_OF_DAYS_IN_A_WEEK = 7;
30+
final public const NUMBER_OF_MONTHS_IN_A_YEAR = 12;
31+
final public const NUMBER_OF_DAYS_IN_A_YEAR = 365;
32+
final public const NUMBER_OF_DAYS_IN_A_LEAP_YEAR = 366;
3333

34-
public const DAY_MONDAY = 'monday';
35-
public const DAY_MONDAY_SHORT = 'mon';
36-
public const DAY_TUESDAY = 'tuesday';
37-
public const DAY_TUESDAY_SHORT = 'tue';
38-
public const DAY_WEDNESDAY = 'wednesday';
39-
public const DAY_WEDNESDAY_SHORT = 'wed';
40-
public const DAY_THURSDAY = 'thursday';
41-
public const DAY_THURSDAY_SHORT = 'thu';
42-
public const DAY_FRIDAY = 'friday';
43-
public const DAY_FRIDAY_SHORT = 'fri';
44-
public const DAY_SATURDAY = 'saturday';
45-
public const DAY_SATURDAY_SHORT = 'sat';
46-
public const DAY_SUNDAY = 'sunday';
47-
public const DAY_SUNDAY_SHORT = 'sun';
34+
final public const DAY_MONDAY = 'monday';
35+
final public const DAY_MONDAY_SHORT = 'mon';
36+
final public const DAY_TUESDAY = 'tuesday';
37+
final public const DAY_TUESDAY_SHORT = 'tue';
38+
final public const DAY_WEDNESDAY = 'wednesday';
39+
final public const DAY_WEDNESDAY_SHORT = 'wed';
40+
final public const DAY_THURSDAY = 'thursday';
41+
final public const DAY_THURSDAY_SHORT = 'thu';
42+
final public const DAY_FRIDAY = 'friday';
43+
final public const DAY_FRIDAY_SHORT = 'fri';
44+
final public const DAY_SATURDAY = 'saturday';
45+
final public const DAY_SATURDAY_SHORT = 'sat';
46+
final public const DAY_SUNDAY = 'sunday';
47+
final public const DAY_SUNDAY_SHORT = 'sun';
4848

49-
public const MONTH_JANUARY = 'january';
50-
public const MONTH_JANUARY_SHORT = 'jan';
51-
public const MONTH_FEBRUARY = 'february';
52-
public const MONTH_FEBRUARY_SHORT = 'feb';
53-
public const MONTH_MARCH = 'march';
54-
public const MONTH_MARCH_SHORT = 'mar';
55-
public const MONTH_APRIL = 'april';
56-
public const MONTH_APRIL_SHORT = 'apr';
57-
public const MONTH_MAY = 'may';
58-
public const MONTH_MAY_SHORT = 'may';
59-
public const MONTH_JUNE = 'june';
60-
public const MONTH_JUNE_SHORT = 'jun';
61-
public const MONTH_JULY = 'july';
62-
public const MONTH_JULY_SHORT = 'jul';
63-
public const MONTH_AUGUST = 'august';
64-
public const MONTH_AUGUST_SHORT = 'aug';
65-
public const MONTH_SEPTEMBER = 'september';
66-
public const MONTH_SEPTEMBER_SHORT = 'sep';
67-
public const MONTH_OCTOBER = 'october';
68-
public const MONTH_OCTOBER_SHORT = 'oct';
69-
public const MONTH_NOVEMBER = 'november';
70-
public const MONTH_NOVEMBER_SHORT = 'nov';
71-
public const MONTH_DECEMBER = 'december';
72-
public const MONTH_DECEMBER_SHORT = 'dec';
49+
final public const MONTH_JANUARY = 'january';
50+
final public const MONTH_JANUARY_SHORT = 'jan';
51+
final public const MONTH_FEBRUARY = 'february';
52+
final public const MONTH_FEBRUARY_SHORT = 'feb';
53+
final public const MONTH_MARCH = 'march';
54+
final public const MONTH_MARCH_SHORT = 'mar';
55+
final public const MONTH_APRIL = 'april';
56+
final public const MONTH_APRIL_SHORT = 'apr';
57+
final public const MONTH_MAY = 'may';
58+
final public const MONTH_MAY_SHORT = 'may';
59+
final public const MONTH_JUNE = 'june';
60+
final public const MONTH_JUNE_SHORT = 'jun';
61+
final public const MONTH_JULY = 'july';
62+
final public const MONTH_JULY_SHORT = 'jul';
63+
final public const MONTH_AUGUST = 'august';
64+
final public const MONTH_AUGUST_SHORT = 'aug';
65+
final public const MONTH_SEPTEMBER = 'september';
66+
final public const MONTH_SEPTEMBER_SHORT = 'sep';
67+
final public const MONTH_OCTOBER = 'october';
68+
final public const MONTH_OCTOBER_SHORT = 'oct';
69+
final public const MONTH_NOVEMBER = 'november';
70+
final public const MONTH_NOVEMBER_SHORT = 'nov';
71+
final public const MONTH_DECEMBER = 'december';
72+
final public const MONTH_DECEMBER_SHORT = 'dec';
7373

74-
public const WINTER_MONTHS = [self::MONTH_DECEMBER, self::MONTH_JANUARY, self::MONTH_FEBRUARY];
75-
public const WINTER_MONTHS_SHORT = [self::MONTH_DECEMBER_SHORT, self::MONTH_JANUARY_SHORT, self::MONTH_FEBRUARY_SHORT];
76-
public const SPRING_MONTHS = [self::MONTH_MARCH, self::MONTH_APRIL, self::MONTH_MAY];
77-
public const SPRING_MONTHS_SHORT = [self::MONTH_MARCH_SHORT, self::MONTH_APRIL_SHORT, self::MONTH_MAY_SHORT];
78-
public const SUMMER_MONTHS = [self::MONTH_JUNE, self::MONTH_JULY, self::MONTH_AUGUST];
79-
public const SUMMER_MONTHS_SHORT = [self::MONTH_JUNE_SHORT, self::MONTH_JULY_SHORT, self::MONTH_AUGUST_SHORT];
80-
public const AUTUMN_MONTHS = [self::MONTH_SEPTEMBER, self::MONTH_OCTOBER, self::MONTH_NOVEMBER];
81-
public const AUTUMN_MONTHS_SHORT = [self::MONTH_SEPTEMBER_SHORT, self::MONTH_OCTOBER_SHORT, self::MONTH_NOVEMBER_SHORT];
74+
final public const WINTER_MONTHS = [self::MONTH_DECEMBER, self::MONTH_JANUARY, self::MONTH_FEBRUARY];
75+
final public const WINTER_MONTHS_SHORT = [self::MONTH_DECEMBER_SHORT, self::MONTH_JANUARY_SHORT, self::MONTH_FEBRUARY_SHORT];
76+
final public const SPRING_MONTHS = [self::MONTH_MARCH, self::MONTH_APRIL, self::MONTH_MAY];
77+
final public const SPRING_MONTHS_SHORT = [self::MONTH_MARCH_SHORT, self::MONTH_APRIL_SHORT, self::MONTH_MAY_SHORT];
78+
final public const SUMMER_MONTHS = [self::MONTH_JUNE, self::MONTH_JULY, self::MONTH_AUGUST];
79+
final public const SUMMER_MONTHS_SHORT = [self::MONTH_JUNE_SHORT, self::MONTH_JULY_SHORT, self::MONTH_AUGUST_SHORT];
80+
final public const AUTUMN_MONTHS = [self::MONTH_SEPTEMBER, self::MONTH_OCTOBER, self::MONTH_NOVEMBER];
81+
final public const AUTUMN_MONTHS_SHORT = [self::MONTH_SEPTEMBER_SHORT, self::MONTH_OCTOBER_SHORT, self::MONTH_NOVEMBER_SHORT];
8282
}

0 commit comments

Comments
 (0)