php - 在脚本执行时将 Date() 设置为特定的内容

标签 php date legacy

我找到了一些到处都使用 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/

相关文章:

php - 如何在 MAC Sierra (MAMP) 上为 PHP7.1 启用 OPCache

php - 是否有可能获得一个 url 的 facebook 点赞数?

iphone - 更新本地通知的开火日期并取消之前的通知

php - 使用 ORDER BY datetime 时 MYSQL 查询非常慢

api - 通过使用 5.5 使用 Drools 6.0 新的 PHREAK 算法。遗留 API

legacy - 是什么导致了代码遗留?

javascript - 无法使用 Angular 将数据 POST 到 Laravel 5 Controller ,错误 : 422 Unprocessable Entity

php - SQL 查询加载速度比它说的慢

php - 如何在php中将ISO8601转换为日期格式

windows - 为什么 bmp 倒置存储?