在 php-8 和旧版本中,以下代码有效
class Foo {
public function __construct(string $string = null) {}
}
但是在php-8中,随着属性提升,它会抛出一个错误
class Foo {
public function __construct(private string $string = null) {}
}
致命错误:不能使用 null 作为字符串类型的参数 $string 的默认值
虽然使字符串可以为空
class Foo {
public function __construct(private ?string $string = null) {}
}
那么这也是一个错误还是预期的行为?