【问题标题】:How to use accessor function如何使用访问器功能
【发布时间】:2025-12-25 06:40:16
【问题描述】:

我了解到您可以使用访问器函数通过一段代码进行所有访问。这本书向我展示了代码,我明白了。

但我不知道如何使用它。谁能给我一个使用这个函数的例子或语法吗?

我书中的代码:

class classname
{
    public $attribute;
    function __get($name)
    {
        return $this->$name;
    }
    function __set($name, $value)
    {
        $this->$name = $value;
    }
}

【问题讨论】:

  • 您遇到困难的部分是什么?如果调用属性(any 属性),__set 会将属性$name 设置为$value,然后__get 获取值。例如$foo->number = 42number 将是$name42 将是$value
  • 他只是好奇,仅此而已。
  • 实际上,有一个意义。没有 __set 和 __get 就不能访问私有变量。虽然你也可以创建动态变量。

标签: php function class attributes accessor


【解决方案1】:

访问器提供了一种访问私有类变量的方法。

一个例子(假设$attribute 是私有的):

<?php 
     $classNameObject = new classname();

     // Setting the value
     $classNameObject->attribute = "A value";

     // Getting the value
     echo $classNameObject->attribute;
?>

但在 php 中,__set()__get() 函数以它们可以创建动态属性的方式工作。

【讨论】:

  • 正是我想要的 ^_^ 谢谢!
  • 我收到此错误:注意:尝试在第 17 行的 C:\Apache24\htdocs\test3.php 中获取非对象的属性,知道为什么吗? $name; } 函数 __set($name, $value) { $this->$name = $value; } } $a = 新类名(); $a = "一个值";回声$a->属性; ?>
  • 注意$a = "A value"。您将 $a 从 classname 对象更改为 String 对象。 php 有一个动态变量类型。
  • 哦,我太笨了,现在明白了。再次感谢您