我只是想知道将null传递给构造函数args以管理非覆盖是否是一种不好的做法?
例如:
class Car
{
private $brand;
private $color;
public function __construct($brand, $color=null)
{
// ...
}
}
答案 0 :(得分:1)
不是。 import subprocess
subprocess.call(["aws", "--region", "us-east-1", "ec2", "modify-instance-attribute", "--instance-id", "i-782cc9fb", "--groups", "sg-47fb243f"])
在安全性方面在PHP中是完全有效的(像空字符串或null
之类的东西或类似的东西更有效地失败)。
我认为这里正确的问题是“给构造函数的参数赋予默认值是不好的”,但对于那个问题,它也不是。
我的理由是,有时你想暗示在大多数情况下会使用的默认行为,而在某些情况下,比如5%的情况,你需要以某种方式改变对象的行为,你想要成为能够在构造函数中告诉我们存在这种差异。
有时,特别是如果参数会对对象进行重大更改,或者如果有多个值都被广泛使用,则使用方法设置它可能更有意义。在您的情况下,该方法类似于"0"
,默认情况下隐含为$car->color("foo");
。