【问题标题】:How to handle deprecated function in PHP如何处理 PHP 中已弃用的函数
【发布时间】:2010-07-23 03:29:13
【问题描述】:

我是这个网站的新手。我想问一下PHP编程。我们如何处理 PHP 中已弃用的函数。我想将它重定向到我的新功能。众所周知,ereg 函数在 PHP 5.3.0 中已被弃用,建议使用 preg_match(posix 到 PCRE)。但是,当我们用 ereg 函数写了很多代码时,我们是否必须手动更改它?我想要这样的解决方案。

function ereg($pattern, $string, &$array) { return preg_match('#'.$pattern.'#', $string, $array); }

主要问题是不是 ereg 函数,而是处理 弃用函数的解决方案。 我一直在谷歌搜索。有人建议使用 override_function (使用 APD 扩展)。但是,这个扩展很难找到(我需要为 windows 构建预编译的扩展)。任何人都可以帮助我吗? 我很抱歉我的英语不好。希望你能理解。

【问题讨论】:

标签: php function deprecated


【解决方案1】:

他们告诉你它已被弃用并且他们没有完全删除它的原因是为了给你时间更新你的代码。

如果您不想更新代码,则始终可以不升级 PHP 安装。或者,您可以等到 PHP 版本发布,将 ereg() 完全删除,然后使用上述解决方案。

其他可能的解决方案包括对所有 ereg 调用进行搜索/替换,并将其替换为 my_ereg,这可能是您在上面定义的函数。

还有:

if(!function_exists("ereg")){ .... }

在 if 语句中定义函数,检查函数是否已经存在。这将使过渡更加顺畅。

但总而言之,弃用的目的是让开发人员有时间更新他们的代码,并在他们完全从代码库中删除之前停止使用所有弃用的函数。

我相信有些人称之为“维护”。

【讨论】:

  • 是的...我知道。但是更新百万行代码是很累人的。我已经尝试过你上面给出的代码。但它没有用。这可能意味着“已弃用的功能仍然可用,但无法访问”。所以,它永远不会
    if (!function_exists("ereg"))
    条件。
  • @iroel 欢迎来到软件开发的世界。您的代码库中真的有 数百万 次对 ereg 的调用吗?我对此表示怀疑,您的 IDE 的查找/替换功能应该会使更新更容易一些。
  • @iroel 通常不推荐使用的函数如果使用它们会产生错误消息,但仍然有效。 find/replace 方法会很好用..
  • @iroel 只需删除已弃用的功能。您不必一次完成所有工作,但在下一个主要 PHP 版本之前的一年中,您应该有足够的时间。
  • 主要问题不是替换代码,而是如何处理弃用的函数。自 PHP 5.3.0 起,有些函数已弃用。比手动编辑代码更好的解决方案是受欢迎的。也许将来会有一个不能再次使用的功能,我知道你明白这一点。我们是否必须始终手动替换它们以备下次使用?手动替换代码是最后的选择。
【解决方案2】:

您始终可以使用function_exists 函数。

if(!function_exists('ereg'))
{
    function ereg($pattern, $string, &$array) 
    { 
        return preg_match('#'.$pattern.'#', $string, $array); 
    }
}

使用此方法将允许它在所有版本中工作,就好像它已被弃用但仍然可以使用,它将使用该函数,但一旦从 php 中删除,它将能够使用您的用户定义函数。

【讨论】:

    猜你喜欢
    • 2020-04-18
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 2012-03-14
    • 2010-09-14
    相关资源
    最近更新 更多