php-src/Zend/tests/variadic/illegal_variadic_override_ref.phpt
Nikita Popov e72bf63691 Allow variadic arguments to replace non-variadic ones
Any number of arguments can be replaced by a variadic one, so
long as the variadic argument is compatible (in the sense of
contravariance) with the subsumed arguments.

In particular this means that function(...$args) becomes a
near-universal signature: It is compatible with any function
signature that does not accept parameters by-reference.

This also fixes bug #70839, which describes a special case.

Closes GH-5059.
2020-01-23 15:23:31 +01:00

17 lines
312 B
PHP

--TEST--
Illegal variadic inheritance due to reference mismatch
--FILE--
<?php
class A {
public function test(&$a, &$b) {}
}
class B extends A {
public function test(...$args) {}
}
?>
--EXPECTF--
Fatal error: Declaration of B::test(...$args) must be compatible with A::test(&$a, &$b) in %s on line %d