Pull to refresh

Comments 14

В целом вы правы, но если использовать пространства имен — хакнуть нечего делать:
<?php
namespace time_hack;
function time () {
	return 10;
}
echo time();
пхпшный time() пожалуй а мускульный now()?
А вместо мускульного лучше использовать вставку того, который генерит PHP.
Для себя давно решил — использовать везде Unix timestamp, который генерирует скрипт, ложить как есть в BigInt, а на месте вывода уже разбираться с временными зонами. Работает железобетонно. А если БД удаленная — то тем более генерить время лучше в одном месте.
А потом, если надо напрямую проверить, что проиходит в базе, исследовать причину возникновения какой-нибудь ошибки, то приходится все конвертировать в нормальные даты?
time и time_hack/time это все же разные вещи. Вообще, если заморачиваться, то можно, только вот зачем?
override_function() переопределит везде, а не только в конкретном месте. Тем более, не можно будет в разных местах хакнуть по разному.
Не могу сказать, что этому есть большое практическое применение, но вполне может подойти для узкого круга задач.
я вообще не вижу смысла в переопределении системных функций. Это уж точно не годится для тестирования.
Я думал, что это будет заметка про то, что не стоит использовать php-time() и mysql-now() одновремено, изза того что они не всегда возвращают одно и то же:

1. Сервер пхп и сервер базы может быть расинхронизирован по времени (встречается, если сервер нормально не настроен)
2. Сервер пхп и сервер базы используют разные временные зоны (во всех проектах при инициализации скрипта и при подклюении к базе обычно прописываю timezone, чтобы потом не было сюрпризов).

Так же, возможно, стоило бы сказать, чем отличаются mysql типы TIMESTAMP и DATETIME и про потенциальные грабли (опять же, многие не понимают).
Хабраюзеры! минус поставить может каждый, напишите в комент, что ни так, для всех же будет полезно.
В select запросах функцию now() по-хорошему нельзя использовать, тк запрос не будет закэширован СУБД.
ок, поправил, а по остальному?
А что по остальному? Обычно люди, использующие в select выборках now() не особо парятся по поводу покрытия кода тестами.
Sign up to leave a comment.

Articles