在php中访问类属性的最佳方法是什么-魔术方法还是硬编码setter&;吸气剂
访问PHP类属性的最佳方式是什么?我可以使用内置的php访问器魔术方法,也可以硬编码在php中访问类属性的最佳方法是什么-魔术方法还是硬编码setter&;吸气剂,php,oop,social-networking,Php,Oop,Social Networking,访问PHP类属性的最佳方式是什么?我可以使用内置的php访问器魔术方法,也可以硬编码get*()和set*()方法。当我在一个大的代码库上工作时,对于以后重构代码来说,什么是最有效和最好的。我要求这是一个非常大的代码库。可以把它看作是社交网络的发展。如果我不知道它的用途,我就说不出什么是好的还是坏的 在我看来,最好使用专用的getter/setter,而不是编码\uuu get()或\uu set()魔术方法 原因有二: 我的IDE不会自动完成用魔术方法编码的伪属性。我不知道该属性应该是什么类型
get*()
和set*()
方法。当我在一个大的代码库上工作时,对于以后重构代码来说,什么是最有效和最好的。我要求这是一个非常大的代码库。可以把它看作是社交网络的发展。如果我不知道它的用途,我就说不出什么是好的还是坏的
在我看来,最好使用专用的getter/setter,而不是编码\uuu get()
或\uu set()
魔术方法
原因有二:
\uu get()
或\uu set()
public function __get($name){ // no error handling, but should be some
return $this->{'get'.$name}();
}
还有吸气剂
public function getX(){ ...}
public function getY(){ ...}
等等
这让我可以缩短打字时间,但把一切留给getter
调用伪属性对我来说也有一些缺点,比如任何警告/错误/异常/。。。将以\uu get()
方法发送,而不是getter——我不知道给出了什么$name
,依此类推
编辑
在继承中,使用专用方法获取和设置属性也更为明确。记录软件可以标记getter被重写,因此我知道哪个类更改代码,哪个类使用它的祖先的代码。在\uu get()
中,如果我更改$name
的代码,例如“坐标”,它将被标记为覆盖,但我不会更改“海平面”(我的意思是不总是清楚覆盖了什么)