Yeh*_*sef 0 php variables public accessor
我正在寻找有关在php中使用公共变量与私有变量和访问器方法的建议/经验.
例如$ obj-> foo ='a'; echo $ obj-> foo;
vs $ obj-> setFoo('a'); echo $ obj-> getFoo();
我喜欢公共变量的是较短的语法 - 似乎使用的工作量较少.我明白以后可能会使重构变得更加困难,但我从未体验过它(意思是,有时候设计会发生变化 - 但通常需要更改访问器方法.)
另一种选择是将变量存储在一个数组中并使用魔术方法(__get/__ set)来访问它们 - 然后我可以轻松使用具有重构或访问方法的公共变量.
任何人们在php世界中所做的经验或参考.
对于任何持有访问器方法的人来说,最好的方法是,公共变量是否有效?
是的,访问器方法是一种开销,虽然使用setter/getters的语法与直接访问公共属性一样干净......稍微冗长,但同样干净.
访问器方法的最大好处是,您可以使用set方法验证值并拒绝不适当的值(例如,尝试设置应始终为字符串或数组的整数的属性)...但此验证仅在外部有效代码无法直接访问该属性.
第二个好处,如果您的代码具有相关属性,其中对属性A的更改也需要更改属性B ...如果属性是公共的,则无法控制(或强制执行)此属性.
使用set方法可以实现流畅的界面,或者实现更清晰的代码,例如:
echo $obj->setFoo('a');
Run Code Online (Sandbox Code Playgroud)
代替
$obj->setFoo('a'); echo $obj->getFoo();
Run Code Online (Sandbox Code Playgroud)
如果在set方法中包含一个return