我应该只在一个类方法本地保存变量还是将它们声明为类属性?

Tom*_*Tom 6 php oop

我一直想知道一个类属性是否被实例化并且只在一个类方法中使用它应该是一个类属性还是仅仅是一个只能访问该类方法的局部变量?

例如,我应该将仅在一个方法中使用的变量保存为局部变量,如下所示:

class myClass
{
    public function myMethod()
    {
        $_myVariableUsedOnlyOnce = "Hello World";
        echo $_myVariableUsedOnlyOnce;
    }
}
Run Code Online (Sandbox Code Playgroud)

或者我应该将变量设为这样的私有类属性:

class myClass
{
    private $_myVariableUsedOnlyOnce;

    public function myMethod()
    {
        $this->_myVariableUsedOnlyOnce = "Hello World";
        echo $this->_myVariableUsedOnlyOnce;
    }
}
Run Code Online (Sandbox Code Playgroud)

哪种方法"闻起来"?除了需要print_r()整个对象以进行调试之外,使所有方法变量类属性有什么好处?

谢谢

Mat*_*son 5

如果您需要它在函数调用之间具有持久性,那么最好使用类属性,以便它可以像对象一样移动。您将来可能还想在其他功能中出于其他原因使用它。然而,它确实增加了开销。

一般来说,类应该有一些现实世界的类似物,所以如果你的变量对应于有意义的东西,例如一个人类有一个 $height,那么它属于一个类属性。否则,如果它只是方法内部计算的一部分,那么它并不真正属于该类,例如一个人没有 $shoelaceIterator 或其他东西。

我认为,令人困惑的对象设计更像是一种味道,而不是潜在的小内存开销(尽管这取决于变量有多大)。