我是 PHP 新手,每当我阅读良好实践(尤其是与 OOP 相关的实践)时,我经常会看到诸如“不要将局部变量暴露到全局空间,而是使用 getter 方法或检索方法”之类的说法。 。
我理解为什么我们不想污染全局命名空间,但是在什么时候调用 getter 方法只是为了访问一个简单的属性变得非常荒谬?我认为这表现出极大的虚伪。我们愿意公开和调用类定义之外的方法,但不愿意公开和调用简单变量?为什么是这样?方法不是更复杂吗?
如果我的困惑是错误的,请原谅我。我真的很想了解 OOP 最佳实践。
使用 getter 和 setter 访问对象属性始终是最佳实践,因为它们隐藏了有关如何存储和获取特定值的信息。
基本上,您提供一个接口(不会改变)来通过隐藏逻辑(可能会改变)访问信息。
一个愚蠢的例子可能是getTotal返回计算值的方法。您可以有一个像这样的简单 getter,它只返回先前计算的总数:
function getTotal()
{
return $privateTotal;
}
Run Code Online (Sandbox Code Playgroud)
或者你可以计算 getter 中的总数:
function getTotal()
{
return $sub1 + $sub2 + $sub3;
}
Run Code Online (Sandbox Code Playgroud)
您可以随时更改实施。客户不会意识到你逻辑的变化。