значение === null? Иначе придется при определенном сценарии в клиентском коде вызывать сначала setFoo, а затем тут же getFoo
public function getFoo(): Foo
{
if ($this->foo === null) {
$this->foo = Foo::create($this->fooId);
}
return $this->foo;
}
лучше в конструкторе
Это очень тяжелый объект, который может понадобится только при определенном сценарии, но не всегда
если свойство foo всего лишь для кэширования, то иногда таким грешу: ``` public function getFoo(): Foo { static $cache; if ($cache === null) { $cache = Foo::create($this->fooId); } return $cache; } ```
этот вариант плох тем что вы намертво связываете два класса ваш исходный и Foo
👌 пока не начнутся проблемы🤤 тогда и думать.. имхо.
тут все зависит от размера проекта и количество человек на нем.. Если небольшой и поддерживается одним - то ок. Если большой долгоживущий проект, то человек который придет на него через пару лет скажет много приятных слов в вашу сторону когда увидит неявное создание объекта в геттере ))))
зачем проектировать наперед какие то воображаемые вещи. разве что по-оверэнджинирить
то что на одном проекте овереинжиниринг - на другом может быть насущная потребность - вот о чем я говорю
Обсуждают сегодня