Commit b70a964
committed
PHP 8.1: fix "passing null to non-nullable"
As of PHP 8.1, passing `null` to not explicitly nullable scalar parameters for PHP native functions is deprecated.
In this case, the `Test_Table_Ascii::testSpacingInTable()` method passes a row with the following values: `array('A2', '', ' C2', null)`.
This then hits this deprecation in the `cli\table\Ascii::row()` method when calling the PHP native `str_replace()` function on line 141.
This can be seen when running the unit tests with `--display-deprecations`:
```
1) path/to/php-cli-tools/lib/cli/table/Ascii.php:141
str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated
Triggered by:
* Test_Table_Ascii::testSpacingInTable
path/to/php-cli-tools/tests/Test_Table_Ascii.php:120
```
There are two options here:
1. Fix the test to pass an empty string instead of `null` for the fourth cell.
2. Fix the method under test to handle potential `null` values more elegantly.
I'm not sure what the desired solution is in this case, so I've implemented solution 2 to maintain the existing behaviour, but can change this to solution 1 if so desired.
Refs:
* https://wiki.php.net/rfc/deprecate_null_to_scalar_internal_arg1 parent 2d1da47 commit b70a964
1 file changed
+1
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
137 | 137 | | |
138 | 138 | | |
139 | 139 | | |
140 | | - | |
| 140 | + | |
141 | 141 | | |
142 | 142 | | |
143 | 143 | | |
| |||
0 commit comments