сеттеры / геттеры в одном методе - PullRequest
1 голос
/ 01 августа 2009

Просто идея:

пример (в PHP): установить имя: $ Object-> имя ( 'имя'); чтобы получить имя: $ Object-> имя ();

Если аргумента нет: метод используется как метод получения, иначе как метод установки. Для простых получателей / сеттеров. Глупо, что угодно, может быть?

edit: следить за ответами: мне не очень нравится get и set , потому что я предпочитаю, чтобы интерфейс был как можно более явным Когда есть только несколько свойств, это также излишне ИМХО. Поэтому я хотел бы сузить его до классов / объектов с парой явных методов получения / установки.

Ответы [ 3 ]

4 голосов
/ 01 августа 2009

Проблема в том, что за этим будет трудно следовать. Я бы предпочел использовать 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.
2 голосов
/ 01 августа 2009

Это можно сделать с помощью магического метода __call ().

class Test {
    public function __call($name, array $args) {
        $variable =& $this->$name;
        if(!empty($args)) {
            $variable = $args[0];
        }
        return $variable;
    }
}
1 голос
/ 01 августа 2009

Конечно, вы могли бы сделать это, если это имеет смысл в вашем приложении, иначе я бы просто использовал стандартные методы получения / установки, которые уже были установлены для вас. Ваша функция может выглядеть примерно так:

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