如何在PHP中弃用函数?

如何在PHP中弃用函数?,php,deprecated,Php,Deprecated,在我工作的团队中,我们有一个旧的代码库,在代码中使用PHP的ibase_*函数与数据库通信。我们为它创建了一个包装器,除了调用原始函数之外,还可以做其他事情。我在整个代码中进行了大量搜索替换,以确保使用了包装器 现在,我们如何防止将来使用ibase_*函数 最好是,我希望它们仍然可用,但在使用时,让它抛出一个通知或警告 首选纯PHP解决方案(无需编译自定义版本的PHP)。我自己没有检查过,但在我的书签中发现: 编辑:好的,这还不起作用-因此,不推荐使用E_USER_,只需使用E_USER_通知:

在我工作的团队中,我们有一个旧的代码库,在代码中使用PHP的ibase_*函数与数据库通信。我们为它创建了一个包装器,除了调用原始函数之外,还可以做其他事情。我在整个代码中进行了大量搜索替换,以确保使用了包装器

现在,我们如何防止将来使用ibase_*函数

最好是,我希望它们仍然可用,但在使用时,让它抛出一个通知或警告


首选纯PHP解决方案(无需编译自定义版本的PHP)。

我自己没有检查过,但在我的书签中发现:

编辑:好的,这还不起作用-因此,不推荐使用E_USER_,只需使用E_USER_通知:

<?php
class Foo
{   
    public function __construct()
    {
        trigger_error('Use Bar instead', E_USER_NOTICE);
    }
}

$foo = new Foo()


如果您的函数是类的一部分,那么您可以在构造函数中使用来警告弃用

或者,如果函数位于单个文件中,则每当文件包含在其他位置时,在文件顶部触发弃用警告将显示错误


最后,您可以在任何不推荐使用的函数的第一行抛出错误。

如果我理解正确,您想在使用内置PHP函数时触发错误吗?在这种情况下,查看函数.< /p> ,而不是在使用时提高运行时警告,您可以考虑编写一个脚本,该脚本可以扫描您的代码库来使用该函数,然后生成一个冒犯代码的报告。每隔一段时间,把它检查一遍


如果使用版本控制系统,可以将脚本设置为提交挂钩。我可能会推荐一个post钩子,当一个包含不推荐的函数的脚本被签入时,它只发送一封电子邮件,但是如果你真的想强制执行它,你可以有一个预钩子来完全阻止任何人将其签入。

一般来说,你可以将一个方法标记为已弃用,以向你的用户发出关于在未来版本中无法工作的代码的警告。我认为最好的方法是与一些药物一起使用

/**
*@弃用
*
*@return$this
*/
公共函数oldMethod()
{
触发器错误(“方法”;
退还$this;
}
@deprecated
phpdoc很重要,因为许多ide喜欢识别它,并在尝试使用它时删除方法名,因此在实际运行代码之前,您会注意到它已被弃用

它看起来或多或少是这样的:

除了phpdoc之外,您还可以通过在运行时触发正确的错误来确保用户得到警告。只需确保使用了正确的常量(即
e\u USER\u已弃用


E_DEPRECATED
被PHP内部使用,因此您应该不要使用它。更多的信息。它不是我的函数,但是PHP构建了像iBaseQueq这样的Ibasy*函数。你可以考虑使用PHP 5.3。x,以后的版本控制不是我的函数,但是PHP构建的iBasy**函数比如iBasyQueq。谢谢,在你发布的链接之后,我找到了我需要的,这里:请记住,这是APD(调试器)扩展的一部分。您不应该在生产环境中使用它,甚至在您的测试机器上,它可能会与其他调试器(如Xdebug)冲突,因此您可能不想使用它。我建议在您的测试环境上进行静态分析(对于简单的情况,preg应该这样做)。
Notice: Use Bar instead in /home/unexist/projects/ingame/svn/foo.php on line 6
function my_deprecated_function() {
    trigger_error("Deprecated function called.", E_USER_NOTICE);
    // do stuff.
}