【发布时间】:2013-05-16 12:05:23
【问题描述】:
访问 PHP 类的属性的最佳方式是什么?我可以使用内置的 php 访问器魔术方法,或者我应该硬编码 get*() 和 set*() 方法。当我在处理大型代码库时,以后重构代码最有效和最好的方法是什么。我要求这个非常大的代码库。将其视为社交网络的发展。
【问题讨论】:
标签: php oop social-networking
访问 PHP 类的属性的最佳方式是什么?我可以使用内置的 php 访问器魔术方法,或者我应该硬编码 get*() 和 set*() 方法。当我在处理大型代码库时,以后重构代码最有效和最好的方法是什么。我要求这个非常大的代码库。将其视为社交网络的发展。
【问题讨论】:
标签: php oop social-networking
如果我不知道这样做的目的,我无法说出什么是更好或更坏。
在我看来,最好使用专用的 getter/setter,而不是编码 __get() 或 __set() 魔术方法。
出于两个原因:
__get() 或__set()。有时我会使用类似的东西
public function __get($name){ // no error handling, but should be some
return $this->{'get'.$name}();
}
还有吸气剂
public function getX(){ ...}
public function getY(){ ...}
等等。
这让我可以缩短打字时间,但将所有内容留给 getter。
调用伪属性对我来说也有一些缺点,因为任何警告/错误/异常/...都将在 __get() 方法中发送,而不是在 getter 中发送——我不知道$name 给出了什么等等。
编辑
使用专用方法获取和设置属性在继承中也更加清晰。记录软件可以标记 getter 已被覆盖,所以我知道哪个类更改了代码,以及哪个使用了它的祖先的代码。在__get() 中,如果我更改$name 的代码,它将被标记为已覆盖,例如。 “坐标”,但我不更改“海平面”(我的意思是并不总是清楚被覆盖的内容)。
【讨论】: