繁体   English   中英

PHP OOP-直接修饰属性是好是坏?

[英]PHP OOP - Is it a good/bad directly adressing properties?

我将尝试通过一个例子来说明这一点:

class DogShelter
{
  private $dog;

  public function handleDogDirect( )
  {
     $this->dog = trim( $this->dog );
     $this->dog = rtrim( $this->dog, 'abc' );
     $this->dog = strtolower( $this->dog );
     $this->dog = basename( $this->dog );
  }

  public function handleDogIndirect( )
  {
     $dog = $this->dog;

     $dog = trim( $dog );
     $dog = rtrim( $dog, 'abc' );
     $dog = strtolower( $dog );
     $dog = basename( $dog );

     $this->dog = $dog;
  }
}

在不同情况下,哪个函数更好handleDogDirecthandleDogIndirect

  • 为什么?
  • 哪一个可能更快?
  • 我应该使用哪一个?

顺便说一句:由于代表重新计算,所以我无法再通过wordpress使用OpenID登录。 它一直说No OpenID endpoint found. 我真的很感谢您的帮助。

我将使用handleDogDirect因为它正在访问$dog 实例 ,这似乎是您想要实现的目标。 后一个函数似乎创建了不必要的变量来执行相同的功能。

按照惯例,每当我使用类的属性时,我就在类函数内部,我总是直接使用$this关键字。

如果两者中的任何一个都存在性能问题,则它可以忽略不计。 强烈建议在需要考虑性能时考虑性能问题。

我认为无缘无故创建一个新变量毫无意义。 我认为对性能的影响可以忽略不计。 实际上应该发生的是,在将值放入类变量之前,应将其清除,即在setDog()中。

我会说这更多是个人编码风格的问题。

有时我会像handleDogIndirect()那样进行操作,因为它对我可视化代码的方式更有意义,因为它涉及的键入次数更少(尤其是按住shift键的次数更少),并且因为我认为它读起来更好。

我将尝试解释为什么这对我来说更有意义。 这些功能是他们自己的小世界,这就是为什么它们拥有自己的范围。 他们在该范围内工作时很高兴,因此我首先要确保我将他们需要的所有物品都拉到他们的范围内。 完成此操作后,我不必考虑其他任何地方发生的事情,只需考虑该函数的本地情况即可。 减少思维混乱。

然后,当他们完成工作时,我会将他们的有用数据放回原处。

如果您使用的方法过长或过于复杂,我认为这特别有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM