Function signature checking should be improved
zonuexe opened this issue · comments
These errors below looks strange:
40) Warning
Incompatible signature for PHP >= 8:
- mb_ucfirst(string $string, ?string $encoding = null): string
+ mb_ucfirst(string $string, ?string $encoding = null): string
41) Warning
Incompatible signature for PHP >= 8:
- mb_lcfirst(string $string, ?string $encoding = null): string
+ mb_lcfirst(string $string, ?string $encoding = null): string
Internal functions up to PHP 8.0 implicitly accepted null
as a string
. It seems that the type is declared as ?string
instead of string
for compatibility in polyfills up to php80.
polyfill/src/Util/TestListenerTrait.php
Lines 126 to 136 in df4793d
In the code below, ?
is removed to check the difference between the internal function and the polyfill interface.
PHP 8.4 deprecates implicit nullable, so this test should be replaced with more stringent checks.
refs #471 (comment)
The implicit null in internal functions actually exists until PHP 9.0. It is deprecated in PHP 8.1 but it still works.