@Andy91

ООП. хранить ли данные в объекте?

Прошу прощения наверное за глупый вопрос, но трудно его сформулировать, поэтому не знаю даже как googl-ить эту тему. Подскажите новичку как правильней относительно ООП хранить данные. Трудно пока обяснить поэтому привожу два примера:
class Class{
  function FUNC(){
    // код для получения DATA
    return Data;
  }
}

obj = new Class();
d = obj->FUNC();


или так

class Class{
  private DATA

  function FUNC(){
    if( this->DATA ){
      return this->DATA;
    } else {
      // код для получения DATA;
      this->DATA = DATA;
      return DATA;
    }
  }
}

obj = new Class();
d = obj->FUNC();
  • Вопрос задан
  • 512 просмотров
Пригласить эксперта
Ответы на вопрос 1
@xfg
Не оба.
class Class {
  private $data;

  public function __construct($data) {
    $this->data = $data;
  }
  public function data() {
    return $this->data;
  }
}

Код для получения data живет за пределами класса. Чтобы понять, почему так, переименуйте Class например в Auto, а data например в color. В общем, суть в том, что у объекта должно быть состояние (свойства объекта) и может быть поведение (методы объекта), которые это состояние меняют. Это должно быть очевидно. Иногда бывают исключения. Очень редко. Почти всегда, можно сделать тру ООП.

Сейчас у вас, к сожалению, процедурный код, обернутый в номенклатуру ООП :(
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы