我只想知道为了管理非覆盖而将 null 传递给构造函数参数是否是一种不好的做法?
例如:
class Car
{
private $brand;
private $color;
public function __construct($brand, $color=null)
{
// ...
}
}
不是。 就安全性而言,null
在PHP中是完全有效的(像空字符串或"0"
之类的东西更容易失败)。
我认为这里的正确问题是"为构造器的参数提供默认值是否不好",但对于这个问题,它也不是。
我的推理是,有时你想暗示在大多数情况下会使用的默认行为,在某些情况下,比如 5% 的情况,你需要以某种方式改变对象的行为,你希望能够在构造函数中分辨出存在这种差异。
有时,特别是如果参数会对对象进行重大更改,或者如果有多个值都被广泛使用,那么使用方法来设置它可能更有意义。在您的情况下,该方法类似于 $car->color("foo");
,并且暗示默认为 null
。