Там действительно нет правильного ответа на это. Зависит от того, сколько пользователей вы загружаете одновременно, сколько полей текста / блобов находится в вашей таблице пользователей, загружает ли ваша таблица пользователей какие-либо связанные дочерние объекты. Как говорит aaronjensen, этот шаблон называется отложенная загрузка - а противоположное поведение (загрузка всего впереди на всякий случай, если вам это нужно) известно как готовая загрузка,
Тем не менее, есть третий вариант, который вы можете рассмотреть, это ленивая загрузка всего объекта User при обращении к любому из его свойств:
public function get_email_address() {
if (!$this->email_address) {
$this->load_all_data_from_db($this->id)
}
return $this->email_address;
}
Преимущества этого подхода состоят в том, что вы можете создать коллекцию пользователей (например, список всех пользователей, чьи пароли пустые, может быть?) На основе только их идентификаторов, без потери памяти при полной загрузке каждого отдельного пользователя, но затем вам требуется только один вызов базы данных для каждого пользователя, чтобы заполнить остальные поля пользователя.