好的,这真的困扰着我,我开始认为这一切都归结为个人选择,而不是一种更高效或编写更好代码的特定方式:我应该还是不应该在 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;