setter / getters在一种方法中

时间:2009-08-01 00:02:37

标签: php oop setter getter

只是一个想法:

示例(在PHP中): 设置名称: $对象 - >名称( '名称'); 得到名字: $对象 - >名称();

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

编辑:跟进答案:我不太喜欢获取和设置,因为我更喜欢让界面尽可能明确。当只有少数几个属性时,恕我直言也太过分了。所以我想用一些明确的getter / setter将它缩小到类/对象。

3 个答案:

答案 0 :(得分:4)

问题是很难遵循。我更倾向于使用PHP5的__get和__set,因此获取和设置变量更自然,每个人都会知道我在做什么。 IE:

class myClass
{

    function __get($name)
    {
       return $this->array[$name];
    }
    function __set($name, $value)
    {
       $this->array[$name] = $value;
    }
    function print()
    {
       echo $this->array['test'];
    }
}
$obj = new myClass;
$obj->test = "Hi";
echo $obj->test; //echos Hi.
$obj->print(); //echos Hi.

答案 1 :(得分:2)

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

class Test {
    public function __call($name, array $args) {
        $variable =& $this->$name;
        if(!empty($args)) {
            $variable = $args[0];
        }
        return $variable;
    }
}

答案 2 :(得分:1)

当然,如果你的应用程序有意义,你可以这样做,否则我只会使用已经为你设置的标准getter / setter。你的功能看起来像这样:

public function name($val = null)
{
  if (is_null($val))
  {
    return $this->name;
  }
  else
  {
    $this->name = $val;
  }
}