13

在使用学说时,我偶然发现了这两个词:访问器和修改器。

这些仅用于教义还是特定于php?

它们是什么意思?

谢谢

4

4 回答 4

28

它们只是 getter 和 setter 的花哨术语。

class MyClass
{
    private $prop;

    // Accessor (or Getter)
    public function getProp()
    {
        return $this->prop;
    }


    // Mutator (or Setter)
    public function setProp($value)
    {
        $this->prop = $value;
    }

}
于 2010-05-04T06:05:24.413 回答
3

我们现在不应该在 php5 和更高版本中使用 __get 和 __set吗?

于 2011-04-14T15:40:25.847 回答
2

如果我理解正确,这两个是特定于我猜任何面向对象的编程语言的。关键是访问器是一个方法或函数,它提供对类中私有字段的访问,而mutator方法允许修改私有字段。我可以继续写这个,但我建议你用谷歌搜索这些,你会得到很多关于它的信息。其全部与封装有关<-建议您也查找该术语。

于 2010-05-04T06:07:41.060 回答
1

它们不仅仅是 getter 和 setter 的不同术语,至少在 Laravel 中不是这样。

引用文档:“访问器和修改器允许您在从模型中检索它们或设置它们的值时格式化 Eloquent 属性。”

https://laravel.com/docs/master/eloquent-mutators

因此,您可以说 getter 和 setter 是访问器和更改器的子集,它们将数据更改为零。

换句话说,如果我想从表中获取原始字段“成本”,我会使用 getter。如果我想以英镑和便士表示和格式化该字段,那么我可以使用访问器。

我还有其他方法可以解决它,但这是一种选择。

于 2016-01-27T17:45:03.950 回答