好的,这件事情正在困扰着我,我开始觉得这完全取决于个人选择而不是一种更有效或更好编写代码的特定方式:在PHP项目中是否应该使用getter/setter方法?到目前为止,我读过的答案相互矛盾,也不完全适用于PHP,因为它不是一种编译语言。例如,看看Stack Overflow上的这个问题(“为什么要使用getter和setter?”)。其中提出了很多使用它们的好理由,但所有子评论都提到了访问器是邪恶的,应该避免使用,穿插其中的是一些更令人不安的评论,认为它们应该被完全避免,因为它会“搞乱你的代码”。
我只得到了相互矛盾的答案,没有一个与解释PHP环境相关。能否有人阐明一下为什么/为什么不应该在PHP中使用它们以及他们背后的理由?如果我们可以简单地将属性定义为私有或受保护的,是否真的很重要,反正:
封装getter和setter提供的保护微不足道
...引用自“ sbi ”(为什么要使用getter和setter?)
就个人而言,我仍然不理解:
Class Foo {
public $bar;
function setBarType($val) {
$this->bar = $val;
}
}
$fee = new Foo();
$fee->setBarType(42);
比这个更好:
Class Foo {
public $bar;
}
$fee = new Foo();
$fee->bar = 42;
$val
是否符合要求,如果有任何错误就抛出异常、触发用户错误或者直接返回setter函数(推荐使用第一种方式),这其实是封装的关键所在。请注意,在翻译过程中不得改变原文意思,也不需要提供解释或额外内容。 - Leri