php术语:getter和public方法之间的区别?

时间:2010-09-06 02:06:28

标签: php oop methods terminology getter

我的问题更多是关于术语然后是技术性问题(或者是它?)。

类中的getter方法和公共方法有什么区别?它们是同一个还是区别?

我问,因为我正在尝试学习最佳编码实践,这个领域对我来说似乎很灰白。我正在评论我的代码,并注意到我有一个名为“Getters”的大部分和另一个名为“公共方法”的大部分然后我就像......“什么是差异?!”。

谢谢!

3 个答案:

答案 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通常返回一个私有变量。这意味着从对象获取属性状态的唯一方法是通过一个方法获取它,这可能会或可能不会做额外的事情。