Вопрос

Просто идея.

Пример

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

class Test {
    public function __call($name, array $args) {
        $variable =& $this->$name;
        if(!empty($args)) {
            $variable = $args[0];
        }
        return $variable;
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top