<?php
interface AAA{
function method($x);
}
interface BBB extends AAA{
function method($x, $y = null);
}
// this works correctly:
class AA_ implements AAA{
function method($x){}
}
class BB_ extends AA_ implements BBB{
function method($x, $y = null){}
}
(new BB_())->method(1, 1);
// this doesn't:
abstract class AAA_ implements AAA{}
abstract class BBB_ extends AAA_ implements BBB{}
// AAA::method is checked to be compatible against BBB::method,
// while it should happen the opposite
Fatal error: Declaration of AAA::method($x) must be compatible with BBB::method($x, $y = null) in /in/LKFbZ on line 4
Process exited with code 255.
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Fatal error: Declaration of AAA::method($x) must be compatible with BBB::method($x, $y = null) in /in/LKFbZ on line 4
Process exited with code 255.
Output for 7.4.0 - 7.4.33
Fatal error: Declaration of AAA::method($x) must be compatible with BBB::method($x, $y = NULL) in /in/LKFbZ on line 4
Process exited with code 255.