Возвращать это из сеттера неправильно ООП POV? - PullRequest
0 голосов
/ 07 февраля 2012

Возвращает $this от установщика неправильный OOP POV (для цепочки сеттера)?

class Person
{

   protected $firstName, $lastName;

   public function __construct($first = null, $last = null)
   {
      $this->firstName = $first;
      $this->lastName  = $last;

   }

   public function setFirstName($first)
   {
      $this->firstName = $first;
      return $this;
   }

   public function setLastName($last)
   {
      $this->lastName = $last;
      return $this;
   }
}

$p = new Person();
$p->setFirstName('John')->setLastName('Smith');

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Не думаю, что это плохая практика, Zend Framework использует это (и я считаю, что это отличный кусок кода php, который использует почти все, что предоставляет php). Вот хорошая статья с примерами.

Позволяет писать упрощенный код без повторного доступа к переменным, а лучше читаемые коды - вот что важно ..

Объект всегда(в php5) возвращается как ссылки, так что это не должно вызывать никаких накладных расходов.

В любом случае, я бы переименовал все функции в public function &setFirstName($first), чтобы было ясно, что вы хотите переписать сам объект при следующем вызове, но это определенноне обязательно.

РЕДАКТИРОВАТЬ по ссылкам

Здесь описано, что такое ссылки (прочитайте также, что они делают, а что нет) и как вернуть ссылку из функции.Как упоминалось ранее, php 5 " по умолчанию работает с объектом как ссылка " (не совсем верно, прочитайте статью), поэтому добавление & перед именем функции не требуется, но вы проясните это (и явно), что «Я хочу работать со ссылкой на объект» .

1 голос
/ 07 февраля 2012

Это распространенный способ предоставления удобства использования при кодировании. Я предпочитаю делать это согласованно, а не делать это вообще. Иначе это может сбить с толку.

...