Предположим, у меня есть модель со свойством:
/**
* @var array
*/
protected $myProperty;
Нет поля базы данных для этого свойства, данные для этого свойства извлекаются откуда-то еще:
/**
* @return array
*/
public function getMyProperty() {
return getDataFromSomewhere();
}
Проблема, которую я вижу здесь, заключается в том, что если я использую это свойство более одного раза, функция вызывается несколько раз. И если эта функция извлекает данные, например, из другой таблицы с присоединениями mysql или делает какие-то обширные вычисления, это не соответствует действительности.
Каковы мои возможности здесь? Немного улучшить геттер?
/**
* @return array
*/
public function getMyProperty() {
if($this->myProperty === NULL) {
$this->setMyProperty(getDataFromSomewhere());
}
return $this->myProperty;
}
Я знаю, что мог бы использовать Caching Framework и кэшировать значение, возвращаемое функцией "getDataFromSomewhere", но я ищу более простое решение.