在 PHP 中将 null 传递给构造函数参数是不是一种不好的做法


Is it bad practice to pass null to a constructor args in PHP?

我只想知道为了管理非覆盖而将 null 传递给构造函数参数是否是一种不好的做法?

例如:

class Car
{
    private $brand;
    private $color;
    public function __construct($brand, $color=null) 
    {
        // ...
    }
}

不是。 就安全性而言,null在PHP中是完全有效的(像空字符串或"0"之类的东西更容易失败)。

我认为这里的正确问题是"为构造器的参数提供默认值是否不好",但对于这个问题,它也不是。

我的推理是,有时你想暗示在大多数情况下会使用的默认行为,在某些情况下,比如 5% 的情况,你需要以某种方式改变对象的行为,你希望能够在构造函数中分辨出存在这种差异。

有时,特别是如果参数会对对象进行重大更改,或者如果有多个值都被广泛使用,那么使用方法来设置它可能更有意义。在您的情况下,该方法类似于 $car->color("foo"); ,并且暗示默认为 null