Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中访问类属性的最佳方法是什么-魔术方法还是硬编码setter&;吸气剂_Php_Oop_Social Networking - Fatal编程技术网

在php中访问类属性的最佳方法是什么-魔术方法还是硬编码setter&;吸气剂

在php中访问类属性的最佳方法是什么-魔术方法还是硬编码setter&;吸气剂,php,oop,social-networking,Php,Oop,Social Networking,访问PHP类属性的最佳方式是什么?我可以使用内置的php访问器魔术方法,也可以硬编码get*()和set*()方法。当我在一个大的代码库上工作时,对于以后重构代码来说,什么是最有效和最好的。我要求这是一个非常大的代码库。可以把它看作是社交网络的发展。如果我不知道它的用途,我就说不出什么是好的还是坏的 在我看来,最好使用专用的getter/setter,而不是编码\uuu get()或\uu set()魔术方法 原因有二: 我的IDE不会自动完成用魔术方法编码的伪属性。我不知道该属性应该是什么类型

访问PHP类属性的最佳方式是什么?我可以使用内置的php访问器魔术方法,也可以硬编码
get*()
set*()
方法。当我在一个大的代码库上工作时,对于以后重构代码来说,什么是最有效和最好的。我要求这是一个非常大的代码库。可以把它看作是社交网络的发展。

如果我不知道它的用途,我就说不出什么是好的还是坏的

在我看来,最好使用专用的getter/setter,而不是编码
\uuu get()
\uu set()
魔术方法

原因有二:

  • 我的IDE不会自动完成用魔术方法编码的伪属性。我不知道该属性应该是什么类型,甚至不知道是否有具有此名称的属性
  • 当我需要改变getter/setter的行为时,很容易找到它所在的位置。我只更改方法代码,而不更改大的
    \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
    的代码,例如“坐标”,它将被标记为覆盖,但我不会更改“海平面”(我的意思是不总是清楚覆盖了什么)