当我使用默认值定义数组属性时:
class Foo {
protected $leArray = [
'foo',
'bar',
'baz',
];
}
我的IDE,phpstorm,由于代码检查而警告我:
这个属性初始化似乎非常重,可能应该定义为静态。
但为什么要这样呢?使这种初始化静态有什么好处?
答案 0 :(得分:0)
我相信即使你在PHP中询问特定情况,它也与PHP无关。
您的IDE会警告您,因为在类实例的生命周期中,可能不会修改包含数组的此属性。因此,您不希望每次都使用新数组实例化整个类。也就是说,您可以将所谓的属性转换为静态属性,并避免使用相同数组的多个实例,并与所有Foo
类实例共享一个。
BTW,如果在给定Foo
实例的生命周期内修改此类数组,则不希望此属性为static
,除非您希望一个实例可以修改它对于所有其他时刻的情况。