Skip to content

Commit

Permalink
Fix error on PHP 8.4
Browse files Browse the repository at this point in the history
PHP 8.4 adds a new interface method DatetimeImmutable::createFromTimestamp().
  • Loading branch information
ADmad committed Jul 13, 2024
1 parent 2046a0e commit 7593c47
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 5 deletions.
53 changes: 51 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,57 @@ permissions:

jobs:
testsuite:
uses: cakephp/.github/.github/workflows/[email protected]
secrets: inherit
runs-on: ubuntu-22.04
continue-on-error: ${{ matrix.unstable }}
strategy:
fail-fast: false
matrix:
php-version: ['8.1']
dependencies: [highest]
unstable: [false]
include:
- php-version: '8.1'
dependencies: lowest
unstable: false
- php-version: '8.2'
dependencies: highest
unstable: false
- php-version: '8.3'
dependencies: highest
unstable: false
- php-version: '8.4'
dependencies: highest
unstable: true
composer-options: "--ignore-platform-req=php"

steps:
- uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
extensions: mbstring, intl
ini-values: zend.assertions=1
coverage: pcov

- name: Composer install
uses: ramsey/composer-install@v2
with:
dependency-versions: ${{ matrix.dependencies }}
composer-options: ${{ matrix.composer-options }}

- name: Run PHPUnit
run: |
if [[ ${{ matrix.php-version }} == '8.1' && ${{ matrix.dependencies }} == 'highest' ]]; then
export CODECOVERAGE=1 && vendor/bin/phpunit --display-deprecations --display-warnings --display-incomplete --display-skipped --coverage-clover=coverage.xml
else
vendor/bin/phpunit --display-deprecations --display-warnings
fi
- name: Code Coverage Report
if: success() && matrix.php-version == '8.1' && matrix.dependencies == 'highest'
uses: codecov/codecov-action@v3

cs-stan:
uses: cakephp/.github/.github/workflows/[email protected]
Expand Down
5 changes: 5 additions & 0 deletions phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,8 @@ parameters:
- tests/bootstrap.php
paths:
- src/
ignoreErrors:
-
message: "#^Call to an undefined static method DateTimeImmutable\\:\\:createFromTimestamp\\(\\)\\.$#"
count: 1
path: src/Chronos.php
16 changes: 13 additions & 3 deletions src/Chronos.php
Original file line number Diff line number Diff line change
Expand Up @@ -736,13 +736,23 @@ public static function createFromArray(array $values): static
/**
* Create an instance from a timestamp
*
* @param int $timestamp The timestamp to create an instance from.
* @param float|int $timestamp The timestamp to create an instance from.
* @param \DateTimeZone|string|null $timezone The DateTimeZone object or timezone name the new instance should use.
* @return static
*/
public static function createFromTimestamp(int $timestamp, DateTimeZone|string|null $timezone = null): static
public static function createFromTimestamp(float|int $timestamp, DateTimeZone|string|null $timezone = null): static
{
return static::now($timezone)->setTimestamp($timestamp);
if (PHP_VERSION_ID >= 80400 && $timezone === null) {
return parent::createFromTimestamp($timestamp);
}

$instance = static::now($timezone);

if (is_int($timestamp)) {
return $instance->setTimestamp($timestamp);
}

return $instance->modify('@' . $timestamp);
}

/**
Expand Down

0 comments on commit 7593c47

Please sign in to comment.