PHP дата, как свойство класса

175
06 февраля 2019, 12:30

Пытался получить ответ в google, но, возможно, я не так задавал вопрос и не нашел ответ.

Вопрос: как правильно работать с датами в PHP при объектно-ориентированном подходе. До сих пор во всех классах свойства, представляющие дату (время) я заполнял timestamp числом. "Чувствую", что правильнее использовать стандартный класс DateTime. Но, с другой стороны объект использует больше памяти, и, соответственно, должен медленней работать, что при большом количестве объектов с большим количеством полей DateTime негативно скажется на производительности (например, страница с сотней записей (= 100 объектов), в каждом из которых около 5-и полей типа DateTime).

Подскажите "правильный" подход, или где про него можно почитать.

Спасибо.

Answer 1

100 DateTime? Вы этого даже не почувствуете. Даже 1000 и даже 10000.

Попытаюсь вам донести лично мое мнение, хотя ораторские навыки у меня на 0.

Смотрите, при разработке проекта, у вас есть 2 противоположные стороны: быстродействие и архитектура. Занимаясь одной частью, вы жертвуете другой (это аксиома).

У каждой части свои плюсы и минусы: например, макся быстродействие, логично, что вы жертвуете архитектурой проекта, вы получаете минимальное время генерации страницы, однако в перспективном будущем, у вас возникнут проблемы с расширением проекта. Архитектура проекта - это способ стандартизировать и свести к одной мысли логику всего приложения. Когда мы говорим о паттернах - мы сводим логику не просто к одной мысли, а к частоиспользуемой. Т.е. новый программист сможет легко ориентироваться в новом, для него, проекте, зная только принципы, на которых он построен. Архитектура проекта не отталкивается от быстродействия, у архитектуры другие критерии: гибкость, масштабируемость, показатель оптимизации и т.д.

Ваш вопрос носит архитектурный характер, а именно гибкость. Можно сказать что используя DateTime вы увеличиваете гибкость, но уменьшаете быстродействие. Думаю это логично, теперь вопрос в том: на сколько это обоснованно (это критерий оптимизации). Тут все индивидуально и зависит от проекта и от задач, полной информацией владеете только вы.

P.S. Как программист, вы несете ответственность за то, что вы накодили :) Как говорил мне один дядюшка: Чем больше кода - тем больше ответственность. Решение принимаете вы, и спрашивать будут с вас, а не с нас. А чтобы принять решение - надо понимать полную картину. Одно дело когда вы ставите сервер с сайтом на 2ой пентак, другое дело когда у вас кучка ксенонов (где мощности позволяют создать мощную и гибкую структуру). Ваша задача понимать, в какой пропорции должно быть отношение быстродействие-архитектура. Если кто-то скажет, юзайте DateTime - он будет прав, и если кто-то скажет что не надо, он тоже будет прав, но с другой стороны.

Вы должны понимать какие манипуляции будут с этой датой, на сколько сильно это повлияет, какой профит вам даст использование DateTime для других частей программы. И что будет при расширении приложения и т.д. - Все это критерий для выбора того или иного подхода, любое что вы выберете будет правильным, если сможете это обосновать (а вы должны уметь это делать).

P.S.2. Отвечая на конкретный вопрос: При ООП правильно использовать DateTime()

READ ALSO
Почему не срабатывает запрос в базу?

Почему не срабатывает запрос в базу?

Перебирая массив мне надо вносить данные в базу:

149
Интернет магазин (Доска объявлений)

Интернет магазин (Доска объявлений)

Создал доску объявлений на PHP, работает отлично, теперь надо добавить функцию "поднять в горячие", так как раньше не сталкивался такой функцией,...

184
php, проблема с авторизацией, сесия

php, проблема с авторизацией, сесия

никак немогу понять почему после разлогиневания не получается авторизироватся повторно, приходится чистить куки и только тогда авторизация...

199
Горизонтальная рулетка

Горизонтальная рулетка

Всем привет, есть уже давно слитый код горизонтальной рулетки, вопрос в том как мне после нажатия кнопки сделать так чтобы её нельзя было...

206