我正在用PHP创建一个新类。我不认为这个课程会被延长。我是否应该打扰将类成员设为私有并实现getter和setter函数?
我的一部分人认为这只是浪费时间,只会增加我的代码。
这堂课是为了一份简历。我在代码中编写它来演示我的编码风格。问题是雇主是想要看到吸气剂和制定者,还是会让事情变得混乱?
答案 0 :(得分:6)
我不想再一次重复这样的论点,即使你现在不期望继承,你可能在将来仍然需要它,但是他们仍然是使用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”团队的首选代码风格“
那样:
您的简历代码不杂乱
他们明白你的不仅仅是 懒惰,让一切都公开 无缘无故
答案 7 :(得分:1)
你想在set或get(或者只是其中一个私有)中做一些特别的事情吗?
如果没有,那就不要在这些上浪费你的时间。
如果你不以“特殊的方式”使用它们,你就不会获得任何好处,也许它甚至会减慢一切的速度
答案 8 :(得分:0)
如果您在设置或访问这些属性时不打算具有特定行为,则不会产生太大影响。
如果您在以后访问或修改这些属性时需要具有特定行为,则可以始终重载__set和__get方法。