1

只是一个想法:

示例(在 PHP 中):设置名称:$object->name('name'); 获取名称:$object->name();

如果没有参数:该方法用作 getter,否则用作 setter。对于简单的 getter/setter。愚蠢,无论如何,也许?

编辑:跟进答案:我不太喜欢get和set,因为我更喜欢让界面尽可能明确。当只有几个属性时,恕我直言,这也是矫枉过正。因此,我想将其缩小到具有几个显式 getter/setter 的类/对象。

4

3 回答 3

4

问题是很难遵循。我更喜欢使用 PHP5 的 __get 和 __set,这样获取和设置变量更自然,而且每个人都会确切地知道我在做什么。IE:

我的班级
{

    函数 __get($name)
    {
       返回 $this->array[$name];
    }
    函数 __set($name, $value)
    {
       $this->array[$name] = $value;
    }
    函数打印()
    {
       echo $this->array['test'];
    }
}
$obj = 新的 myClass;
$obj->test = "嗨";
回声$obj->测试;//回声嗨。
$obj->打印();//回声嗨。
于 2009-08-01T00:05:17.467 回答
2

可以使用 __call() 魔术方法来完成。

class Test {
    public function __call($name, array $args) {
        $variable =& $this->$name;
        if(!empty($args)) {
            $variable = $args[0];
        }
        return $variable;
    }
}
于 2009-08-01T00:13:10.590 回答
1

当然,如果它在您的应用程序中有意义,您可以这样做,否则我只会使用已经为您设置的标准 getter/setter。您的函数可能如下所示:

public function name($val = null)
{
  if (is_null($val))
  {
    return $this->name;
  }
  else
  {
    $this->name = $val;
  }
}
于 2009-08-01T00:05:36.063 回答