我的问题更多是关于术语然后是技术性问题(或者是它?)。
类中的getter方法和公共方法有什么区别?它们是同一个还是区别?
我问,因为我正在尝试学习最佳编码实践,这个领域对我来说似乎很灰白。我正在评论我的代码,并注意到我有一个名为“Getters”的大部分和另一个名为“公共方法”的大部分然后我就像......“什么是差异?!”。
谢谢!
答案 0 :(得分:5)
简单来说,PHP中的getter只是一种允许代码的其他部分访问某个类属性的方法。
例如:
<?php
class Person {
private $name;
public function __construct($name) {
$this->name = $name;
}
// Getter
public function getName() {
return $this->name;
}
}
$bob = new Person('Bob');
echo $bob->getName(); // Bob
?>
方法可能不一定只是为了返回一个属性;你可以创建其他方法,以便你的班级可以做一些时髦的事情。
为了扩展上面的例子,让我们为Person
类提供一个名为say()
的方法,并给它一个函数/方法参数来表示该说些什么:
public function say($what) {
printf('%s says "%s"', $this->name, $what);
}
在我们创建一个对象之后调用它:
$bob = new Person('Bob');
echo $bob->getName(), "\n"; // Bob
$bob->say('Hello!'); // Bob says "Hello!"
请注意,在say()
方法中,我引用了$this->name
。没关系,因为$name
属性在同一个类中找到。 getter(及其相应的setter,如果有的话)的目的是允许代码的其他部分访问此属性。
答案 1 :(得分:1)
Getters是返回私有变量值的公共方法。类似地,setter是允许修改或“设置”私有变量的公共方法。
答案 2 :(得分:0)
可以从类外部更新公共方法,并且类不一定要知道它。
公共getter或setter为您提供了更大的灵活性 - 即当我们尝试阅读$obj->$property
时,该变量可能不是就绪。但是,如果我们使用$obj->getSomething()
,我们可以对该变量执行任何操作,以使其准备就绪,
不同之处在于公共getter通常返回一个私有变量。这意味着从对象获取属性状态的唯一方法是通过一个方法获取它,这可能会或可能不会做额外的事情。