<?php
interface Baz
{
public function foo(string $param = null, int $bar);
}
class Foo
{
public function foo(string $param = null, int $bar)
{
var_dump($param, $bar);
}
}
class Bar extends Foo implements Baz
{
public function foo(?string $param, int $bar)
{
parent::foo($param, $bar);
}
}
(new Bar)->foo('a', 1);
interface Qux
{
public function foo(?string $param, int $bar);
}
class Quux
{
public function foo(?string $param, int $bar)
{
var_dump($param, $bar);
}
}
class Corge extends Quux implements Qux
{
public function foo(string $param = null, int $bar)
{
parent::foo($param, $bar);
}
}
(new Corge)->foo('b', 2);
Deprecated: Baz::foo(): Implicitly marking parameter $param as nullable is deprecated, the explicit nullable type must be used instead in /in/USkgi on line 5
Deprecated: Foo::foo(): Implicitly marking parameter $param as nullable is deprecated, the explicit nullable type must be used instead in /in/USkgi on line 10
Deprecated: Corge::foo(): Implicitly marking parameter $param as nullable is deprecated, the explicit nullable type must be used instead in /in/USkgi on line 44
string(1) "a"
int(1)
string(1) "b"
int(2)