From e7507ab70fa795c69ef934c1f2e11c09e2e04fe0 Mon Sep 17 00:00:00 2001 From: frankprins Date: Tue, 25 Oct 2022 15:41:01 +0200 Subject: [PATCH] Add BC version that supports both 7.4 and 8.0 --- .github/workflows/run-tests.yml | 2 +- composer.json | 2 +- src/Backtrace.php | 4 ++-- src/Cache.php | 16 ++++++++-------- src/functions.php | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index c9901dc..ae6e63c 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -11,7 +11,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - php: [8.1, 8.0] + php: [8.1, 8.0, 7.4] dependency-version: [prefer-lowest, prefer-stable] os: [ubuntu-latest, windows-latest] diff --git a/composer.json b/composer.json index 5af750f..187f597 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ } ], "require": { - "php": "^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "pestphp/pest": "^1.21", diff --git a/src/Backtrace.php b/src/Backtrace.php index 4374d48..d5cb094 100644 --- a/src/Backtrace.php +++ b/src/Backtrace.php @@ -30,7 +30,7 @@ public function getObjectName(): ?string return $this->trace['class'] ?? null; } - public function getObject(): mixed + public function getObject() { if ($this->globalFunction()) { return $this->zeroStack['file']; @@ -46,7 +46,7 @@ public function getHash(): string }, $this->getArguments()); $prefix = $this->getObjectName() . $this->getFunctionName(); - if (str_contains($prefix, '{closure}')) { + if (strpos($prefix, '{closure}') !== false) { $prefix = $this->zeroStack['line']; } diff --git a/src/Cache.php b/src/Cache.php index 927ed43..c35a93c 100644 --- a/src/Cache.php +++ b/src/Cache.php @@ -3,24 +3,24 @@ namespace Spatie\Once; use Countable; -use WeakMap; +use SplObjectStorage; class Cache implements Countable { protected static self $cache; - public WeakMap $values; + public SplObjectStorage $values; protected bool $enabled = true; - public static function getInstance(): static + public static function getInstance(): self { - return static::$cache ??= new static; + return static::$cache ??= new self; } protected function __construct() { - $this->values = new WeakMap(); + $this->values = new SplObjectStorage(); } public function has(object $object, string $backtraceHash): bool @@ -33,12 +33,12 @@ public function has(object $object, string $backtraceHash): bool return array_key_exists($backtraceHash, $this->values[$object]); } - public function get($object, string $backtraceHash): mixed + public function get($object, string $backtraceHash) { return $this->values[$object][$backtraceHash]; } - public function set(object $object, string $backtraceHash, mixed $value): void + public function set(object $object, string $backtraceHash, $value): void { $cached = $this->values[$object] ?? []; @@ -54,7 +54,7 @@ public function forget(object $object): void public function flush(): self { - $this->values = new WeakMap(); + $this->values = new SplObjectStorage(); return $this; } diff --git a/src/functions.php b/src/functions.php index 8716999..0b1689c 100644 --- a/src/functions.php +++ b/src/functions.php @@ -9,7 +9,7 @@ * @param (callable(): T) $callback * @return T */ -function once(callable $callback): mixed +function once(callable $callback) { $trace = debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, 2