是否可以让 PHP 应用程序认为服务器日期时间偏移了一个很大的可配置量(比如 6 个月前,或 6 个月后)?
背景: 我们有一个处理体育赛事的 Web 应用程序,现在我们想在我们的开发环境中运行它,使网站认为它是 2009 年秋季而不是 2010 年夏季。那是因为我们有去年的大量数据秋季和今年的季节尚未开始,因此使用大量真实数据测试新功能会更容易,而不是为 2010 年编造新的测试数据。
我们不想实际更改服务器的日期和时间。当前最好的选择似乎是将代码中的所有 date() 调用更改为 my_date(),然后让 my_date() 将偏移量添加到实际系统日期。
似乎此功能在类似情况下对其他人很有用,所以我很好奇是否有更简单的方法通过一些配置参数在全局范围内执行此操作而无需修改代码。我做了RTM。
最佳答案
您可以安装 Runkit在开发服务器上并重新定义所有必需的 dateTime 函数以返回修改后的值,例如
if(APP_ENV === 'testing') {
include 'datetime-monkeypatches.php';
}
其中 datetime-monkeypatches.php
将包含您对所需功能的补丁。这样您就不必更改实际代码。这就像对原始函数使用适配器一样,只要您将它们保存在那个单独的文件中,它就可以保持可维护性。
另一种选择是使用 http://antecedent.github.io/patchwork
Patchwork is a PHP library that makes it possible to redefine user-defined functions and methods at runtime, loosely replicating the functionality
runkit_function_redefine
in pure PHP 5.3 code, which, among other things, enables you to replace static and private methods with test doubles.
关于php - 在 PHP 中模拟不同的服务器日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3271735/