是否有可能让PHP应用程序认为服务器日期时间被大的可配置量(如6个月前或6个月后)所抵消?
背景:我们有一个处理体育赛事的网络应用程序,现在我们希望在我们的开发环境中运行它,使网站认为它是2009年秋季而不是2010年夏季.这是因为我们有很好的数据来自去年的秋季和今年的季节尚未开始,因此使用大量实际数据测试新功能将更容易,而不是编制2010年的新测试数据.
我们不想实际更改服务器的日期和时间.当前最佳选项似乎是将代码中的所有date()调用更改为my_date(),然后让my_date()将偏移量添加到实际系统日期.
看起来这个功能在其他人的类似情况下会很有用,所以我很好奇是否有更简单的方法通过一些配置参数全局完成而不修改代码.我做了RTM.
您可以在开发服务器上安装Runkit并重新定义所有必需的 dateTime 函数以返回修改后的值,例如
if(APP_ENV === 'testing') {
include 'datetime-monkeypatches.php';
}
Run Code Online (Sandbox Code Playgroud)
其中datetime-monkeypatches.php包含所需功能的补丁。这样您就不必更改实际代码。这就像使用原始函数的适配器一样,只要将它们保存在单独的文件中,它就保持可维护性。
另一种选择是使用http://antecedent.github.io/patchwork
Patchwork 是一个 PHP 库,可以在运行时重新定义用户定义的函数和方法,松散地复制
runkit_function_redefine纯 PHP 5.3 代码中的功能,除此之外,它还使您能够用测试替身替换静态和私有方法。
| 归档时间: |
|
| 查看次数: |
2490 次 |
| 最近记录: |