我应该在PHP中使用getter和setter吗?

时间:2010-12-10 20:46:45

标签: php getter-setter

我正在用PHP创建一个新类。我不认为这个课程会被延长。我是否应该打扰将类成员设为私有并实现getter和setter函数?

我的一部分人认为这只是浪费时间,只会增加我的代码。

这堂课是为了一份简历。我在代码中编写它来演示我的编码风格。问题是雇主是想要看到吸气剂和制定者,还是会让事情变得混乱?

9 个答案:

答案 0 :(得分:6)

我不想再一次重复这样的论点,即使你现在不期望继承,你可能在将来仍然需要它,但是他们仍然是使用getter和setter的更多理由:

  • Getters和setter可让您轻松实现属性验证
  • 您的代码将遵循良好的编码指南,因此更容易被其他人阅读。如果我遇到了一个没有使用getter和setter的代码文件,我会对它持怀疑态度,并且必须多次仔细阅读。
  • 此外,这不仅是每个班级的决定,而是整个项目的决定。你想为你需要的某些课程而不是其他课程的学生设置getter和setter吗?我认为一致性很重要。
  • 有些工具可以自动生成为您编写getter和setter。请记住,您只编写了一次代码,但是您多次阅读它,

答案 1 :(得分:4)

查看__get和__set魔术方法,它会保持你的代码干净,你不必因为没有设置变量scopel而感到懒惰。

public function __get($name)
{
  return $this->$name;
}

public function __set($name, $value)
{
  $this->$name = $value;
}

显然你会有更多细节,但这会处理你的访问者。

答案 2 :(得分:3)

您可能永远不会知道将来不需要扩展课程。这堂课会做什么?这有多复杂?

封装是良好的OO设计的一部分。但良好的OO设计不是编程的目标。目标是让事情有效并且能够在需要时轻松修改它们。

答案 3 :(得分:2)

如果我是你,我不会打扰你。你是对的,装修会让你的课堂变得杂乱无章。

答案 4 :(得分:2)

你可以覆盖__get& __ set据我所知。 http://php.net/manual/en/language.oop5.overloading.php

答案 5 :(得分:2)

我喜欢让我的班级中的属性受到保护或私有,然后使用getter和setter。然后我在setter中使用代码来确保属性值在可接受的范围内。我喜欢这种方法,因为我发现它使调试变得更容易,因为我始终可以确定正在设置接受的值,或者抛出异常。它还让我更有信心,当我在属性中保存的值周围传递对象时,不会导致任何其他东西爆炸。

答案 6 :(得分:2)

如果是简历,那么他们很可能会关心你的逻辑,因为他们会像getter / setter这样做一些小细节。

如果是我,我会在没有getter / setter的情况下公开它们,但是在它们上面加上一条评论,说“根据应用程序的范围,考虑使这些私有和使用getter / setter”团队的首选代码风格“

那样:

  1. 您的简历代码不杂乱

  2. 他们明白你的不仅仅是 懒惰,让一切都公开 无缘无故

  3. 它显示了相反 盲目跟随一个特定的 风格,你会考虑特殊的 申请作出决定。

答案 7 :(得分:1)

你想在set或get(或者只是其中一个私有)中做一些特别的事情吗?

如果没有,那就不要在这些上浪费你的时间。

如果你不以“特殊的方式”使用它们,你就不会获得任何好处,也许它甚至会减慢一切的速度

答案 8 :(得分:0)

如果您在设置或访问这些属性时不打算具有特定行为,则不会产生太大影响。

如果您在以后访问或修改这些属性时需要具有特定行为,则可以始终重载__set和__get方法。

请参阅:http://php.net/manual/en/language.oop5.overloading.php

相关问题