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

在PHP中将null传递给构造函数args是一种不好的做法吗?,php,constructor,Php,Constructor,我只是想知道,为了管理非重写,将null传递给构造函数args是否是一种糟糕的做法 例如: class Car { private $brand; private $color; public function __construct($brand, $color=null) { // ... } } 事实并非如此null在安全性方面在PHP中是完全有效的(像空字符串或“0”之类的东西更容易失败) 我认为正确的问题是“为构造函数的参数

我只是想知道,为了管理非重写,将null传递给构造函数args是否是一种糟糕的做法

例如:

class Car
{
    private $brand;
    private $color;

    public function __construct($brand, $color=null) 
    {
        // ...
    }
}

事实并非如此
null
在安全性方面在PHP中是完全有效的(像空字符串或
“0”
之类的东西更容易失败)

我认为正确的问题是“为构造函数的参数指定默认值是否不好”,但对于这个问题,它也不是

我的理由是,有时候你想暗示默认行为,这在大多数情况下都会用到,在某些情况下,比如说5%的情况下,你需要以某种方式改变对象的行为,你希望能够在构造函数中告诉我们存在这种差异


有时,特别是如果参数将对对象进行重大更改,或者如果存在多个广泛使用的值,则使用方法来设置参数可能更有意义。在您的例子中,该方法类似于
$car->color(“foo”),默认值为
null

这不是一个问题,这样做将被称为默认值为null的“可选参数”。这根本不是问题,只是意味着参数是可选的,这没有问题。只要确保代码的其余部分可以处理
null
值。PHP不允许重载函数,允许默认参数是它的补偿方式,因此将默认值设置为
null
很好。是什么让你认为这可能是一种不好的做法?