использовать методы получения или свойства класса? (PHP)

Что считается лучшим методом написания классов ООП, когда дело доходит до внутреннего использования свойства.

Рассмотрим следующий класс:

_foo;
    }

    protected function _doSomething()
    {
        $foo    = $this->_foo;
        $result = null;
        // ...
        return $result;
    }
}

Как вы видите, я использую свойство _foo в _doSomething (), хотя подкласс может переопределить getFoo (), возвращая вычисленное значение, не сохраненное обратно в _foo; это недостаток.

Что мне делать?

  1. пометить геттер как окончательный, использовать свойство внутри (без дополнительных вызовов функций, заставить конечного разработчика использовать _foo как свойство, так как оно защищено)
  2. использовать getFoo () внутри, пометить _foo как частные (дополнительные вызовы функций)

Оба варианта являются водонепроницаемыми, однако меня серьезно беспокоят все дополнительные вызовы функций, поэтому я предпочитаю использовать вариант 1, однако вариант 2 будет более "истинным ООП" imho.

Также прочтите http://fabien.potencier.org/article/47/pragmatism-over-theory-protected-vs-private , где также предлагается вариант 2: /

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

5
задан Roland Franssen 31 December 2011 в 15:58
поделиться