PHP类--使用普通变量代替属性更好吗?

nkhmeac6  于 2023-05-05  发布在  PHP
关注(0)|答案(3)|浏览(146)

在我的最新网站上,我一直在尝试使用类。主要是教自己更多关于OOP的知识,并通过经验学习。
每当我在类中需要一个“变量”时,我就创建一个属性,例如:

class someClass
{

var $valueToUseHere; // Only used internally - can I just use a variable?

    public function doStuff()
    {
        $this->valueToUseHere = 60;
    // Do more stuff here...
    }

}

直到现在,当我深入研究代码并尝试做一些优化时,我才注意到我的函数和类正在传递一些大对象。如果我把所有只在类内部使用的属性都变成普通变量,那么大部分内容都可以去掉。
属性是否仅用于类外部需要的变量,那么在类本身内部使用“普通”变量是否可以接受?
很抱歉,如果这个问题说明了对这个问题缺乏了解。不幸的是,这是我的学习到这一点。我已经做了一些搜索“类属性与变量”等,但没有找到一个全面的答案。
非常感谢

dy1byipe

dy1byipe1#

您的问题有些模糊,但是如果valueToUseHere没有在doStuff之外使用,那么不要将其作为属性!

class someClass {

    public function doStuff() {
        $valueToUseHere = 60;
        // Do more stuff here...
    }

}

如果没有理由与类的其他方法或外部世界共享该值,那么就没有理由用各种属性来弄乱对象。这不仅可能导致保留状态的棘手错误,还迫使您在所有对象方法中对变量名进行不必要的小心。

tmb3ates

tmb3ates2#

实际上,类属性也是变量。基本上你有三个选择:

全局变量,可在任何地方使用,但不推荐使用,因为代码的所有部分都可能依赖于这样的变量,更改很容易破坏任何地方的内容。
类属性(注:你应该定义一个visibility - public/protected/private),这些属性被绑定到对象示例,并且应该用于对象需要保持以供进一步处理的任何状态。通常这些可能会在你的类的一个以上的方法中使用。
方法中的变量就像

public function doStuff()
{
    $valueToUseHere = 60;
    // Do more stuff here...
}

该变量仅在方法内部可用,并在方法执行结束时被丢弃。

f87krz0w

f87krz0w3#

简而言之,您可能更喜欢用途:

属性:当您想要控制获取和设置值时
变量:当你想设置或使用一个变量作为它的性质

这取决于你的需要。如果你只是想在变量中保存一个值,最好保持它的简单性,不要定义设置或获取它的值的函数。但是有时候你可能需要对类中的变量进行更多的控制。例如,你定义了一个整型变量,你希望它的值总是在10到1000之间,而且它不应该在100,200,300,..,900之间。所以这里有一个很好的理由将你的变量访问设置为private,并创建一个公共函数来检查在接受新输入之前需要什么;或者在另一个例子中,你可能想调用另一个函数,或者在这个变量改变之后改变你的类中的另一个依赖变量(例如,这个变量定义了图形输出中矩形的宽度,所以你需要在改变这个变量之后调用相关的图形函数);如果你想让一个变量总是只读或只写,你可以定义属性来控制变量的行为类型。

相关问题