У меня есть другая перспектива ответить на это.
При работе на разных уровнях, например, в приложении MVC, контроллеру нужны службы для вызова бизнес-операций. В таких сценариях контейнер инжекции зависимостей может использоваться для инициализации служб, чтобы исключить исключение NullReferenceException. Это означает, что вам не нужно беспокоиться о проверке нулевого значения и просто вызвать службы с контроллера, как будто они всегда будут доступны (и инициализированы) как одиночный или прототип.
public class MyController
{
private ServiceA serviceA;
private ServiceB serviceB;
public MyController(ServiceA serviceA, ServiceB serviceB)
{
this.serviceA = serviceA;
this.serviceB = serviceB;
}
public void MyMethod()
{
// We don't need to check null because the dependency injection container
// injects it, provided you took care of bootstrapping it.
var someObject = serviceA.DoThis();
}
}
Предел налагается четырьмя байтовыми целыми знаками, которые большинство библиотек C используют для представления этого счета. Быстрая математика (предполагает 365-дневные годы, а не точно):
2147483648 seconds ~ 68.1 years
Это также подразумевает нижний предел ~ 1900. Некоторые библиотеки начали вводить 64-разрядные подсчеты эпохи, но на данный момент они немного и далеко друг от друга.
из-за ограничения типа данных INT на 32-битной машине
http://php.net/manual/en/function.mktime.php
От php.net: «Максимально возможная дата, принятая mktime () и gmmktime (), зависит от текущего часового пояса.
Например, переполнение 32-битной метки времени происходит на этапе 2038- 01-19T03: 14: 08 + 0000Z. Но если вы находитесь в часовом поясе UTC -0500 (например, EST в Северной Америке), максимальное допустимое время до переполнения (для более старых версий PHP в Windows) составляет 2038-01- 18T22: 14: 07-0500Z, независимо от того, передаете ли вы его в mktime () или gmmktime (). "
Я предполагаю, что он хранится в фиксированном количестве бит, что означает ограничение на то, насколько большой может быть метка времени. Мы могли бы сделать математику, чтобы понять ее точно.
Максимальное значение 32-разрядного целого составляет 2,147,483,647. Если вы добавите +1 к этому, вы получите -2,147,483,647. 2,147,483,647 секунд с 01-01-1970 00:00:00 - 19 января 2038 года. Если вы добавите еще одну секунду, вы получите дату где-то в 1902 году.