Skip to content

Commit

Permalink
feat: add workround for implicit nullable deprecation errors in PHP 8.4
Browse files Browse the repository at this point in the history
  • Loading branch information
kenjis committed Sep 5, 2024
1 parent 31e8f9f commit ba1702f
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions system/Debug/Exceptions.php
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,10 @@ public function errorHandler(int $severity, string $message, ?string $file = nul
return true;
}

if ($this->isImplicitNullableDeprecationError($message, $file, $line)) {
return true;
}

if (! $this->config->logDeprecations || (bool) env('CODEIGNITER_SCREAM_DEPRECATIONS')) {
throw new ErrorException($message, 0, $severity, $file, $line);
}
Expand Down Expand Up @@ -253,6 +257,34 @@ private function isSessionSidDeprecationError(string $message, ?string $file = n
return false;
}

/**
* Workaround to implicit nullable deprecation errors in PHP 8.4.
*
* "Implicitly marking parameter $xxx as nullable is deprecated,
* the explicit nullable type must be used instead"
*/
private function isImplicitNullableDeprecationError(string $message, ?string $file = null, ?int $line = null): bool
{
if (
PHP_VERSION_ID >= 80400
&& str_contains($message, 'the explicit nullable type must be used instead')
) {
log_message(
LogLevel::WARNING,
'[DEPRECATED] {message} in {errFile} on line {errLine}.',
[
'message' => $message,
'errFile' => clean_path($file ?? ''),
'errLine' => $line ?? 0,
]
);

return true;
}

return false;
}

/**
* Checks to see if any errors have happened during shutdown that
* need to be caught and handle them.
Expand Down

0 comments on commit ba1702f

Please sign in to comment.