Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PHP 8.1: fix "passing null to non-nullable" #174

Commits on Sep 16, 2024

  1. 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_arg
    jrfnl committed Sep 16, 2024
    Configuration menu
    Copy the full SHA
    b70a964 View commit details
    Browse the repository at this point in the history