PHP如何处理已弃用的函数?

时间:2011-07-25 21:14:06

标签: php deprecated

获取这些错误“已弃用:不推荐使用引用分配新值的返回值...”

虽然我知道弃用函数意味着什么,但我不清楚PHP对它们做了什么?还是像往常一样执行它们?那么就此功能而言,PHP是否默认为变量分配内存位置或仍使用引用指针?

编辑 - 感谢您的回答,我问了这个问题,因为我们正在使用adodb_lite并且库没有更正错误。

9 个答案:

答案 0 :(得分:16)

Deperecated函数仍然存在,您会收到警告。所以他们按预期工作。但是在未来的版本中,它们可能会消失。

对于您有时会注意到的其他已弃用的语言功能,这是相同的。这是一种向用户发出更改信号的方法,这些用户的代码基于较旧的PHP版本。

通常,不推荐使用的功能会在一段时间后被删除,但这是不可预测的。我知道至少有一个案例,一个曾经弃用的功能在以后被弃用了。但是,我认为这是特殊的。

因此,如果您看到这些警告,请更新代码。大多数情况下,PHP文档提供了更多信息,说明为什么某些内容已被弃用以及要做什么。大多数情况下它是一种改进(例如在安全性方面),所以如果你关心代码,你真的应该处理这些警告。

编辑:我认为在此背景下值得注意的还有strict standards notices PHP Manual。它们有些相关,因为这些通知也是语言变化的有用提示。

  

在开发过程中启用 E_STRICT 有一些好处。 STRICT消息将帮助您使用最新和最好的建议编码方法,例如警告您使用已弃用的函数。

(来自上面的PHP手册链接)

答案 1 :(得分:3)

它们将继续按照文档记录运行,但它们将来可能会被删除,因此应尽快在现有代码中进行转换,而不是在新代码中使用。

答案 2 :(得分:3)

不推荐使用的功能可以使用,但有更好的选择,并且可能会在未来的PHP版本中删除它们。

答案 3 :(得分:3)

我相信PHP会继续执行该功能,同时还会触发一条错误,指出该功能已被弃用。

Ye Olde版本:

function foo(){
  bar();
}

新版本:

function foo(){
  bar();
  trigger_error('Deprecated: this function is deprecated foo!', E_NOTICE);
}

注意:可能不是 实际在幕后发生的事情,但它会相对等效。

答案 4 :(得分:1)

没什么,这只是一个警告。将其读作“此功能仍然适用于此版本的PHP,但未来版本中的所有投注均已关闭”。除了添加弃用警告外,内部没有任何区别。

答案 5 :(得分:1)

他们仍然会被执行为'通常'。

但是,您需要尽可能快地抛弃它们,以便您将来继续使用代码。

答案 6 :(得分:1)

除了发出弃用警告,代码也能正常工作。弃用表示将来可能会删除相关功能。

This warning指的是

这样的行
$obj =& new MyClass();

自PHP 5以来,不再需要&符号;你可以简单地写一下

$obj = new MyClass();

答案 7 :(得分:0)

折旧功能仍然存在,但是您会收到警告,这意味着此类功能将来无法使用。

答案 8 :(得分:0)

可以在更高版本的php中将其删除,因此请不要使用共享服务器。这发生在我身上。在服务提供商决定“升级” PHP版本之前,我的网站运行良好。突然,我的网站崩溃了,这是因为php人士凭着无限的智慧决定删除某些功能。