Php 我为什么要费心使用访问器函数呢?

Php 我为什么要费心使用访问器函数呢?,php,class,attributes,accessor,Php,Class,Attributes,Accessor,这是访问器函数: <?php class classname { public $attribute; function __get($name) { return $this->$name; } } $a = new classname; $a->attribute = "Anna"; $name = $a->attribute;

这是访问器函数:

<?php
    class classname
    {
        public $attribute;
        function __get($name)
        {
            return $this->$name;
        }
    }

    $a = new classname;
    $a->attribute = "Anna";
    $name = $a->attribute;

echo $name;

这只是一个没有访问器函数的常规类:

<?php
    class classname
    {
        public $attribute;
    }

    $a = new classname;
    $a->attribute = "Anna";
    $name = $a->attribute;

    echo $name;
?>

它们都提供了相同的结果。我不明白,在什么情况下我应该使用访问器函数?

1)它只是让您控制如何以及谁可以访问该属性。(使用访问器时,属性应为私有。)

2) 您可以根据访问者和访问方式更改该值

3) 您可以在访问某个属性时通知某人


更多…

您只需要非公共属性的访问器。现在有人认为对象的所有属性都应该是私有的/受保护的。当请求不可访问的属性时,将调用magic getter函数。From:\uuu get()用于从不可访问的属性读取数据。在您的示例中,您没有使用\uu get函数!如果存在优先的公共成员变量__get在没有匹配的可访问属性时运行。还有一个问题作为重复IMO更适合。链接为重复的问题通常是关于getter/setter的。在php中使用uuu get()/uuu set()是一个稍微不同的问题(我使用getter和setter并尝试避免u get,除非我真的需要它),非常感谢。随着我读得更多,它会变得更清晰:)