From fceb6750f76c7e786894edcdc8fb9dcc67c9db62 Mon Sep 17 00:00:00 2001 From: Daniel Morell Date: Fri, 21 Nov 2025 16:51:32 -0600 Subject: [PATCH 1/7] Removed deprecated curl_close() calls for PHP 8.5. --- src/Senders/CurlSender.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Senders/CurlSender.php b/src/Senders/CurlSender.php index 54e9af21..7c548fac 100644 --- a/src/Senders/CurlSender.php +++ b/src/Senders/CurlSender.php @@ -77,8 +77,6 @@ public function send(EncodedPayload $payload, string $accessToken): Response $result = $result === false ? curl_error($handle) : json_decode($result, true); - - curl_close($handle); $data = $payload->data(); $uuid = $data['data']['uuid'] ?? null; @@ -200,7 +198,6 @@ private function removeFinishedRequests(string $accessToken) unset($this->inflightRequests[$handleArrayKey]); curl_multi_remove_handle($this->multiHandle, $handle); } - curl_close($handle); } $this->maybeSendMoreBatchRequests($accessToken); } From 3ac40cec9ede8890b94ade93dd178e3db6963d37 Mon Sep 17 00:00:00 2001 From: Daniel Morell Date: Fri, 21 Nov 2025 16:52:15 -0600 Subject: [PATCH 2/7] Removed deprecated ReflectionMethod::setAccessible() calls for PHP 8.5. --- tests/CurlSenderTest.php | 1 - tests/RollbarTest.php | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/CurlSenderTest.php b/tests/CurlSenderTest.php index 891250bb..120f656c 100644 --- a/tests/CurlSenderTest.php +++ b/tests/CurlSenderTest.php @@ -66,7 +66,6 @@ private static function getPrivateProperty(object $object, string $property): mi { $reflection = new ReflectionClass($object); $property = $reflection->getProperty($property); - $property->setAccessible(true); return $property->getValue($object); } } diff --git a/tests/RollbarTest.php b/tests/RollbarTest.php index 0a59be4c..09a5877b 100644 --- a/tests/RollbarTest.php +++ b/tests/RollbarTest.php @@ -109,8 +109,7 @@ public function testLogExtraData(): void $logger = Rollbar::logger(); $reflection = new \ReflectionClass(get_class($logger)); $method = $reflection->getMethod('getPayload'); - $method->setAccessible(true); - + $payload = $method->invokeArgs( $logger, array( From 900478718a150d5f2148a6c3b71c9dcb4666a0d2 Mon Sep 17 00:00:00 2001 From: Daniel Morell Date: Fri, 21 Nov 2025 16:52:42 -0600 Subject: [PATCH 3/7] Added PHP 8.5 to CI tests. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b81774a3..07de83c7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,7 +36,7 @@ jobs: matrix: # All the versions, OS, and dependency levels we want to support os: [ubuntu] # TODO: windows, macos - php: [ '8.1', '8.2', '8.3', '8.4' ] + php: [ '8.1', '8.2', '8.3', '8.4', '8.5' ] dependency: [ stable ] # Our code has paths for with- and without- XDebug, and we want to test # both of them. From 2565e6c18dec876dedb3e0ee7e0bc728db6a0176 Mon Sep 17 00:00:00 2001 From: Daniel Morell Date: Fri, 21 Nov 2025 17:15:05 -0600 Subject: [PATCH 4/7] Added #[\Override] attribute to methods that override parent methods. --- src/DataBuilder.php | 6 ++++++ src/Handlers/ErrorHandler.php | 2 ++ src/Handlers/ExceptionHandler.php | 4 +++- src/Handlers/FatalHandler.php | 6 ++++-- src/Payload/Body.php | 1 + src/Payload/Context.php | 1 + src/Payload/Data.php | 1 + src/Payload/ExceptionInfo.php | 1 + src/Payload/Frame.php | 1 + src/Payload/Level.php | 1 + src/Payload/Message.php | 2 ++ src/Payload/Notifier.php | 1 + src/Payload/Payload.php | 1 + src/Payload/Person.php | 1 + src/Payload/Request.php | 1 + src/Payload/Server.php | 1 + src/Payload/TelemetryBody.php | 1 + src/Payload/TelemetryEvent.php | 1 + src/Payload/Trace.php | 2 ++ src/Payload/TraceChain.php | 2 ++ src/RollbarLogger.php | 1 + src/Scrubber.php | 1 + src/Senders/AgentSender.php | 4 ++++ src/Senders/CurlSender.php | 4 ++++ src/Senders/FluentSender.php | 4 ++++ src/Truncation/AbstractStrategy.php | 2 ++ src/Truncation/FramesStrategy.php | 2 ++ src/Truncation/MinBodyStrategy.php | 1 + src/Truncation/RawStrategy.php | 1 + src/Truncation/StringsStrategy.php | 1 + src/Truncation/TelemetryStrategy.php | 2 ++ 31 files changed, 57 insertions(+), 3 deletions(-) diff --git a/src/DataBuilder.php b/src/DataBuilder.php index cc71cf75..f95f9343 100644 --- a/src/DataBuilder.php +++ b/src/DataBuilder.php @@ -303,6 +303,7 @@ protected function setServerExtras($config) * * @return void */ + #[\Override] public function setCustom(array $config): void { $this->custom = $config['custom'] ?? \Rollbar\Defaults::get()->custom(); @@ -373,6 +374,7 @@ protected function setHost($config) * * @return Data */ + #[\Override] public function makeData(string $level, Throwable|string|Stringable $toLog, array $context): Data { $env = $this->getEnvironment(); @@ -1013,6 +1015,7 @@ protected function getServerExtras() * * @return array|null */ + #[\Override] public function getCustom(): ?array { return $this->custom; @@ -1103,6 +1106,7 @@ protected function resolveCustomContent(mixed $custom): array * * @return void */ + #[\Override] public function addCustom(string $key, mixed $data): void { if (!is_array($this->custom)) { @@ -1119,6 +1123,7 @@ public function addCustom(string $key, mixed $data): void * * @return void */ + #[\Override] public function removeCustom(string $key): void { unset($this->custom[$key]); @@ -1186,6 +1191,7 @@ private function getSourceLines($filename) * * @return ErrorWrapper */ + #[\Override] public function generateErrorWrapper(int $errno, string $errstr, ?string $errfile, ?int $errline): ErrorWrapper { return new ErrorWrapper( diff --git a/src/Handlers/ErrorHandler.php b/src/Handlers/ErrorHandler.php index 92ef07ca..92638d0d 100644 --- a/src/Handlers/ErrorHandler.php +++ b/src/Handlers/ErrorHandler.php @@ -8,6 +8,7 @@ class ErrorHandler extends AbstractHandler { + #[\Override] public function register() { $this->previousHandler = set_error_handler(array($this, 'handle')); @@ -15,6 +16,7 @@ public function register() parent::register(); } + #[\Override] public function handle(...$args) { parent::handle(...$args); diff --git a/src/Handlers/ExceptionHandler.php b/src/Handlers/ExceptionHandler.php index 8f163023..f6cb76dc 100644 --- a/src/Handlers/ExceptionHandler.php +++ b/src/Handlers/ExceptionHandler.php @@ -8,13 +8,15 @@ class ExceptionHandler extends AbstractHandler { + #[\Override] public function register() { $this->previousHandler = set_exception_handler(array($this, 'handle')); parent::register(); } - + + #[\Override] public function handle(...$args) { parent::handle(...$args); diff --git a/src/Handlers/FatalHandler.php b/src/Handlers/FatalHandler.php index 5a1cf504..94f11a2c 100644 --- a/src/Handlers/FatalHandler.php +++ b/src/Handlers/FatalHandler.php @@ -15,14 +15,16 @@ class FatalHandler extends AbstractHandler { private static $fatalErrors = array(E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR); - + + #[\Override] public function register() { \register_shutdown_function(array($this, 'handle')); parent::register(); } - + + #[\Override] public function handle(...$args) { parent::handle(...$args); diff --git a/src/Payload/Body.php b/src/Payload/Body.php index 424ed257..70f25c98 100644 --- a/src/Payload/Body.php +++ b/src/Payload/Body.php @@ -110,6 +110,7 @@ public function setTelemetry(?array $telemetry): void * * @since 4.1.0 Includes the 'telemetry' key, if it is not empty. */ + #[\Override] public function serialize() { $result = array(); diff --git a/src/Payload/Context.php b/src/Payload/Context.php index e6f427a3..9f197a78 100644 --- a/src/Payload/Context.php +++ b/src/Payload/Context.php @@ -35,6 +35,7 @@ public function setPost(array $post): self return $this; } + #[\Override] public function serialize() { $result = array( diff --git a/src/Payload/Data.php b/src/Payload/Data.php index 80381872..e1b22c11 100644 --- a/src/Payload/Data.php +++ b/src/Payload/Data.php @@ -217,6 +217,7 @@ public function setNotifier(Notifier $notifier): self return $this; } + #[\Override] public function serialize() { $result = array( diff --git a/src/Payload/ExceptionInfo.php b/src/Payload/ExceptionInfo.php index f932225c..2b7ef791 100644 --- a/src/Payload/ExceptionInfo.php +++ b/src/Payload/ExceptionInfo.php @@ -49,6 +49,7 @@ public function setDescription(?string $description): self return $this; } + #[\Override] public function serialize() { $result = array( diff --git a/src/Payload/Frame.php b/src/Payload/Frame.php index 70fd7056..d3071b42 100644 --- a/src/Payload/Frame.php +++ b/src/Payload/Frame.php @@ -102,6 +102,7 @@ public function setArgs(array $args): self return $this; } + #[\Override] public function serialize() { $result = array( diff --git a/src/Payload/Level.php b/src/Payload/Level.php index 4b27de76..91a72291 100644 --- a/src/Payload/Level.php +++ b/src/Payload/Level.php @@ -57,6 +57,7 @@ public function toInt(): int * * @return string */ + #[\Override] public function serialize() { return $this->level; diff --git a/src/Payload/Message.php b/src/Payload/Message.php index a88654ed..daf24125 100644 --- a/src/Payload/Message.php +++ b/src/Payload/Message.php @@ -14,6 +14,7 @@ public function __construct( ) { } + #[\Override] public function getKey(): string { return 'message'; @@ -41,6 +42,7 @@ public function setBacktrace(?array $backtrace): self return $this; } + #[\Override] public function serialize() { $toSerialize = array( diff --git a/src/Payload/Notifier.php b/src/Payload/Notifier.php index 167a4092..b902a105 100644 --- a/src/Payload/Notifier.php +++ b/src/Payload/Notifier.php @@ -43,6 +43,7 @@ public function setVersion(string $version): self return $this; } + #[\Override] public function serialize() { $result = array( diff --git a/src/Payload/Payload.php b/src/Payload/Payload.php index 251f9033..07caf02c 100644 --- a/src/Payload/Payload.php +++ b/src/Payload/Payload.php @@ -40,6 +40,7 @@ public function setAccessToken(string $accessToken): self return $this; } + #[\Override] public function serialize($maxDepth = -1): array { $objectHashes = array(); diff --git a/src/Payload/Person.php b/src/Payload/Person.php index f8b143a2..13b1e4ff 100644 --- a/src/Payload/Person.php +++ b/src/Payload/Person.php @@ -75,6 +75,7 @@ public function __set($name, $val) $this->extra[$name] = $val; } + #[\Override] public function serialize() { $result = array( diff --git a/src/Payload/Request.php b/src/Payload/Request.php index 4ceaa9ae..2c7e0a77 100644 --- a/src/Payload/Request.php +++ b/src/Payload/Request.php @@ -140,6 +140,7 @@ public function setSession(array $session): self return $this; } + #[\Override] public function serialize() { $result = array( diff --git a/src/Payload/Server.php b/src/Payload/Server.php index 467be962..1fe6f84d 100644 --- a/src/Payload/Server.php +++ b/src/Payload/Server.php @@ -80,6 +80,7 @@ public function setArgv(array $argv): self return $this; } + #[\Override] public function serialize() { $result = array( diff --git a/src/Payload/TelemetryBody.php b/src/Payload/TelemetryBody.php index 7fc1d351..d1b98589 100644 --- a/src/Payload/TelemetryBody.php +++ b/src/Payload/TelemetryBody.php @@ -98,6 +98,7 @@ public static function fromArray(array $data): self * * @return array */ + #[\Override] public function serialize(): array { // This filters out any null or empty values. diff --git a/src/Payload/TelemetryEvent.php b/src/Payload/TelemetryEvent.php index 019f337f..1be96d74 100644 --- a/src/Payload/TelemetryEvent.php +++ b/src/Payload/TelemetryEvent.php @@ -50,6 +50,7 @@ public function __construct( $this->body = is_array($body) ? TelemetryBody::fromArray($body): $body; } + #[\Override] public function serialize(): array { $result = array_filter([ diff --git a/src/Payload/Trace.php b/src/Payload/Trace.php index 78add415..7e401cf5 100644 --- a/src/Payload/Trace.php +++ b/src/Payload/Trace.php @@ -14,6 +14,7 @@ public function __construct( ) { } + #[\Override] public function getKey(): string { return 'trace'; @@ -41,6 +42,7 @@ public function setException(ExceptionInfo $exception): self return $this; } + #[\Override] public function serialize() { $result = array( diff --git a/src/Payload/TraceChain.php b/src/Payload/TraceChain.php index 4e8caaba..90fcd79e 100644 --- a/src/Payload/TraceChain.php +++ b/src/Payload/TraceChain.php @@ -10,6 +10,7 @@ public function __construct(private array $traces) { } + #[\Override] public function getKey(): string { return 'trace_chain'; @@ -26,6 +27,7 @@ public function setTraces(array $traces): self return $this; } + #[\Override] public function serialize() { $mapValue = function ($value) { diff --git a/src/RollbarLogger.php b/src/RollbarLogger.php index 1cc505cf..a21b65c9 100644 --- a/src/RollbarLogger.php +++ b/src/RollbarLogger.php @@ -196,6 +196,7 @@ public function getCustom(): mixed * @throws InvalidArgumentException If $level is not a valid level. * @throws Throwable Rethrown $message if it is {@see Throwable} and {@see Config::raiseOnError} is true. */ + #[\Override] public function log($level, $message, array $context = array()): void { $this->report($level, $message, $context); diff --git a/src/Scrubber.php b/src/Scrubber.php index e3521307..1c95e819 100644 --- a/src/Scrubber.php +++ b/src/Scrubber.php @@ -94,6 +94,7 @@ public function getSafelist() * * @return mixed */ + #[\Override] public function scrub(array &$data, string $replacement = '********', string $path = ''): array { $fields = $this->getScrubFields(); diff --git a/src/Senders/AgentSender.php b/src/Senders/AgentSender.php index 285c742b..d5f4d26a 100644 --- a/src/Senders/AgentSender.php +++ b/src/Senders/AgentSender.php @@ -27,6 +27,7 @@ public function __construct($opts) /** * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ + #[\Override] public function send(EncodedPayload $payload, string $accessToken): Response { if (empty($this->agentLog)) { @@ -42,6 +43,7 @@ public function send(EncodedPayload $payload, string $accessToken): Response /** * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ + #[\Override] public function sendBatch(array $batch, string $accessToken): void { if (empty($this->agentLog)) { @@ -55,6 +57,7 @@ public function sendBatch(array $batch, string $accessToken): void /** * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ + #[\Override] public function wait(string $accessToken, int $max): void { return; @@ -69,6 +72,7 @@ public function wait(string $accessToken, int $max): void * * @return bool */ + #[\Override] public function requireAccessToken(): bool { return true; diff --git a/src/Senders/CurlSender.php b/src/Senders/CurlSender.php index 7c548fac..e9421436 100644 --- a/src/Senders/CurlSender.php +++ b/src/Senders/CurlSender.php @@ -66,6 +66,7 @@ public function getEndpoint() return $this->endpoint; } + #[\Override] public function send(EncodedPayload $payload, string $accessToken): Response { $handle = curl_init(); @@ -84,6 +85,7 @@ public function send(EncodedPayload $payload, string $accessToken): Response return new Response($statusCode, $result, $uuid); } + #[\Override] public function sendBatch(array $batch, string $accessToken): void { if ($this->multiHandle === null) { @@ -99,6 +101,7 @@ public function sendBatch(array $batch, string $accessToken): void $this->checkForCompletedRequests($accessToken); } + #[\Override] public function wait(string $accessToken, int $max = 0): void { if (count($this->inflightRequests) <= $max) { @@ -120,6 +123,7 @@ public function wait(string $accessToken, int $max = 0): void * @return bool * @since 4.0.0 */ + #[\Override] public function requireAccessToken(): bool { return false; diff --git a/src/Senders/FluentSender.php b/src/Senders/FluentSender.php index 11f9612c..1b9614fd 100644 --- a/src/Senders/FluentSender.php +++ b/src/Senders/FluentSender.php @@ -69,6 +69,7 @@ public function __construct($opts) * @SuppressWarnings(PHPMD.UnusedFormalParameter) Unused parameter is * intended here to comply with SenderInterface */ + #[\Override] public function send(EncodedPayload $payload, string $accessToken): Response { if (empty($this->fluentLogger)) { @@ -85,6 +86,7 @@ public function send(EncodedPayload $payload, string $accessToken): Response return new Response($status, $info, $uuid); } + #[\Override] public function sendBatch(array $batch, string $accessToken, &$responses = array ()): void { $responses = array(); @@ -96,6 +98,7 @@ public function sendBatch(array $batch, string $accessToken, &$responses = array /** * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ + #[\Override] public function wait(string $accessToken, int $max): void { return; @@ -108,6 +111,7 @@ public function wait(string $accessToken, int $max): void * @return bool * @since 4.0.0 */ + #[\Override] public function requireAccessToken(): bool { return false; diff --git a/src/Truncation/AbstractStrategy.php b/src/Truncation/AbstractStrategy.php index bc32ac7e..b27f1c1e 100644 --- a/src/Truncation/AbstractStrategy.php +++ b/src/Truncation/AbstractStrategy.php @@ -15,11 +15,13 @@ public function __construct(protected Truncation $truncation) { } + #[\Override] public function execute(EncodedPayload $payload): EncodedPayload { return $payload; } + #[\Override] public function applies(EncodedPayload $payload): bool { return true; diff --git a/src/Truncation/FramesStrategy.php b/src/Truncation/FramesStrategy.php index eed2d577..9bc95639 100644 --- a/src/Truncation/FramesStrategy.php +++ b/src/Truncation/FramesStrategy.php @@ -26,6 +26,7 @@ class FramesStrategy extends AbstractStrategy * @return EncodedPayload * @throws Exception If the payload encoding fails. */ + #[\Override] public function execute(EncodedPayload $payload): EncodedPayload { $data = $payload->data(); @@ -74,6 +75,7 @@ public static function selectFrames(array $frames, int $range = self::FRAMES_OPT * * @return bool */ + #[\Override] public function applies(EncodedPayload $payload): bool { $payload = $payload->data(); diff --git a/src/Truncation/MinBodyStrategy.php b/src/Truncation/MinBodyStrategy.php index f6b8589f..549246e0 100644 --- a/src/Truncation/MinBodyStrategy.php +++ b/src/Truncation/MinBodyStrategy.php @@ -31,6 +31,7 @@ class MinBodyStrategy extends AbstractStrategy * @return EncodedPayload * @throws Exception If the payload encoding fails. */ + #[\Override] public function execute(EncodedPayload $payload): EncodedPayload { $data = $payload->data(); diff --git a/src/Truncation/RawStrategy.php b/src/Truncation/RawStrategy.php index 69d32213..6721f5f3 100644 --- a/src/Truncation/RawStrategy.php +++ b/src/Truncation/RawStrategy.php @@ -11,6 +11,7 @@ */ class RawStrategy extends AbstractStrategy { + #[\Override] public function execute(EncodedPayload $payload): EncodedPayload { return $payload; diff --git a/src/Truncation/StringsStrategy.php b/src/Truncation/StringsStrategy.php index 2817d963..29d7a871 100644 --- a/src/Truncation/StringsStrategy.php +++ b/src/Truncation/StringsStrategy.php @@ -31,6 +31,7 @@ public static function getThresholds(): array * @return EncodedPayload The truncated payload. * @throws Exception If the JSON encoding fails. */ + #[\Override] public function execute(EncodedPayload $payload): EncodedPayload { $data = $payload->data(); diff --git a/src/Truncation/TelemetryStrategy.php b/src/Truncation/TelemetryStrategy.php index e9b11d1f..4c199697 100644 --- a/src/Truncation/TelemetryStrategy.php +++ b/src/Truncation/TelemetryStrategy.php @@ -50,6 +50,7 @@ public static function selectTelemetry(array $telemetry, int $range = self::TELE * * @since 4.1.0 */ + #[\Override] public function execute(EncodedPayload $payload): EncodedPayload { $data = $payload->data(); @@ -81,6 +82,7 @@ public function execute(EncodedPayload $payload): EncodedPayload * * @since 4.1.0 */ + #[\Override] public function applies(EncodedPayload $payload): bool { // If the payload does not telemetry data, then this strategy does not apply. From d386ea86b40890c720e4c89fd68139452bda484c Mon Sep 17 00:00:00 2001 From: Daniel Morell Date: Fri, 21 Nov 2025 17:15:45 -0600 Subject: [PATCH 5/7] Updated vimeo/psalm to include v6.13. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 6d28b17b..46536465 100644 --- a/composer.json +++ b/composer.json @@ -42,7 +42,7 @@ "mockery/mockery": "^1.5.1", "squizlabs/php_codesniffer": "^3.7", "phpmd/phpmd" : "^2.13", - "vimeo/psalm": "^5.9" + "vimeo/psalm": "^5.9 || ^6.13" }, "suggest": { From 12479e51627db9436de1ccaf4e639e1a446f5def Mon Sep 17 00:00:00 2001 From: Daniel Morell Date: Fri, 21 Nov 2025 17:16:11 -0600 Subject: [PATCH 6/7] Updated CI tests for PHP 8.5 psalm issues. --- .github/workflows/ci.yml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 07de83c7..310d749b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,22 +73,21 @@ jobs: key: ${{ matrix.os }}-composer-${{ hashFiles('**/composer.json') }}-${{ matrix.dependency }}- restore-keys: ${{ matrix.os }}-composer-${{ matrix.dependency }}- - - name: Install dependencies PHP < 8.4 - if: matrix.php != '8.4' + - name: Install dependencies PHP < 8.5 + if: matrix.php != '8.5' run: composer update --prefer-${{ matrix.dependency }} --prefer-dist --no-interaction - - name: Execute tests PHP < 8.4 - if: matrix.php != '8.4' + - name: Execute tests PHP < 8.5 + if: matrix.php != '8.5' run: composer test - # This is a temporary workaround until vimeo/psalm is updated to support PHP 8.4. - # See https://github.com/vimeo/psalm/issues/11107 - - name: Install dependencies PHP 8.4 - if: matrix.php == '8.4' + # This is a temporary workaround until vimeo/psalm is updated to support PHP 8.5. + - name: Install dependencies PHP 8.5 + if: matrix.php == '8.5' run: composer update --prefer-${{ matrix.dependency }} --prefer-dist --no-interaction --ignore-platform-reqs - - name: Execute tests PHP 8.4 - if: matrix.php == '8.4' + - name: Execute tests PHP 8.5 + if: matrix.php == '8.5' run: | ./vendor/bin/phpcs --standard=PSR2 ./src ./tests ./vendor/bin/phpunit --coverage-clover build/logs/clover.xml From e9d29079dd633b28fb79070155a3221c82c064ad Mon Sep 17 00:00:00 2001 From: Daniel Morell Date: Fri, 21 Nov 2025 17:23:07 -0600 Subject: [PATCH 7/7] Updated minimum vimeo/psalm to v6.13. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 46536465..0e51fd30 100644 --- a/composer.json +++ b/composer.json @@ -42,7 +42,7 @@ "mockery/mockery": "^1.5.1", "squizlabs/php_codesniffer": "^3.7", "phpmd/phpmd" : "^2.13", - "vimeo/psalm": "^5.9 || ^6.13" + "vimeo/psalm": "^6.13" }, "suggest": {