我找到了一些到处都使用 date()
的遗留代码。在每个月的 31 日(如果适用),脚本有一个错误,我需要能够复制它来修复。为此,我需要脚本认为今天是 31 号。
显然我可以解析日期并给它一个我想要的日期字符串,但这必须在 date()
的每个实例上 - 这将很难改变并且我很容易错过一个。
因此,在脚本顶部是否有一种方法可以指定“今天的日期”是什么?还是 date()
每次都从服务器获取日期,从而使这不可能?
编辑
需要说明的是,此脚本托管在 Azure App Services 上,这意味着很遗憾我无法更改系统时间。
最佳答案
有一个过时的 pecl 扩展名为 apd它提供了一个函数 override_function()
,它完全可以满足您的需求。没有测试它,但它可能不再工作。
另一种方法是所谓的猴子修补,利用 phps 命名空间。参见 http://till.klampaeckel.de/blog/archives/105-Monkey-patching-in-PHP.html例如和解释。
namespace myNameSpace;
function date($format, $timestamp = '') {
echo 'Would have returned "' . \date($format, $timestamp) . '"';
}
echo date('d.m.Y', time());
因为我们在命名空间 \myNameSpace 中,php 将首先搜索 \myNameSpace\date() 并使用它代替 \date()>.
关于php - 在脚本执行时将 Date() 设置为特定的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37612295/