henzeb/ datetime
简单的可测试的DateTime实例
v1.1.0
2024-02-11 14:35 UTC
Requires
- php: ^7.4|^8.0
Requires (Dev)
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-11 15:49:22 UTC
README
当创建一个需要速度而不仅仅是功能的库或功能时,这个包非常有用,但仍适用于测试需求。
请别误会,Carbon在修改DateTime对象方面是一个很好的包,我经常使用它。但它有代价。当你需要很多它的功能时,你会看到开销增长。比使用纯DateTime
要快。
如果你不希望你的库成为其他人代码的瓶颈,但仍然想能够使用改变日期或时间的功能进行测试,你可以使用这个包。
安装
只需使用以下命令安装。
composer require henzeb/datetime
用法
use Henzeb\DateTime\DateTime; DateTime::now(); DateTime::now(new DateTimeZone(...)); DateTime::new('2022-04-25');
不可变DateTime
use Henzeb\DateTime\DateTimeImmutable; DateTimeImmutable::now(); DateTimeImmutable::now(new DateTimeZone(...)); DateTimeImmutable::new('2022-04-25');
注意:除了new
和now
之外,没有方便的方法或功能。它只是具有timetravel
功能的纯DateTime
或DateTimeImmutable
。
单元测试
就像Carbon一样,这个库有一个静态的setTestNow
方法。你可以传递一个字符串或DateTime对象。当传递null
时,新的DateTime对象将再次使用当前日期和时间。
use Henzeb\DateTime\DateTime; DateTime::setTestNow('now'); // freezes time DateTime::setTestNow('1999-01-01'); DateTime::setTestNow(new DateTime('1999-01-01'));
测试
composer test
变更日志
请参阅变更日志了解最近有哪些变化。
贡献
请参阅贡献指南以获取详细信息。
安全
如果你发现任何安全相关的问题,请通过电子邮件henzeberkheij@gmail.com报告,而不是使用问题跟踪器。
鸣谢
许可证
GNU AGPLv. 请参阅许可证文件以获取更多信息。