PHP OOP - 它是一个好/坏的直接地址属性?

时间:2010-03-22 14:56:01

标签: php loops

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

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

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

顺便说一下: 自rep repalc以来,我再也无法使用WordPress的OpenID登录了。它一直在说No OpenID endpoint found.。我真的很感激任何帮助。

3 个答案:

答案 0 :(得分:3)

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

作为一种约定,每当我使用类的属性时,我都在类函数内部,我总是直接使用$this关键字。

如果两者中的任何一个存在性能问题,则可能忽略不计。我 强烈 建议在担心性能时担心性能问题。

答案 1 :(得分:1)

我认为无缘无故地创建一个新变量是有意义的。我认为如果有任何可以忽略不计的性能。实际应该发生的是,在将值放入类变量之前,它应该是清理的,即在setDog()中。

答案 2 :(得分:0)

我想说这更像是个人编码风格的问题。

我有时会像handleDogIndirect()这样做,因为它让我对我的代码可视化的方式更有意义,因为它涉及更少的输入(特别是更少按住shift键),并且因为我认为它读得更好。 / p>

我会试着解释为什么它对我更有意义。功能是他们自己的小世界,这就是为什么他们有自己的范围。当他们在那个范围内工作时,他们很高兴,所以我首先要确保将他们需要的所有东西都拉到他们的范围内。一旦完成,我不必考虑其他任何地方发生的事情,只考虑该功能的本地功能。减少思维混乱。

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

我认为如果你的方法有点长或复杂,它会特别有用。