2011-07-25 50 views
14

獲取這些錯誤「棄用:通過引用指定新的返回值已被棄用......」PHP對不推薦使用的函數有什麼作用?

儘管我知道棄用函數的意思,但我不是很清楚PHP對他們做了什麼?照常執行它們嗎?因此,在這個函數的這一點上,PHP是否默默地爲變量分配內存位置,還是仍然使用引用指針?

編輯 - 感謝您的答案,我問這個問題,因爲我們使用adodb_lite和庫沒有更正錯誤。

+1

[ADOdb Lite](http://sourceforge.net/projects/adodblite/)是免費軟件,因此您可以參與幫助他們解決問題。通常情況下,這是通過他們的錯誤跟蹤器(網站上的一個列表來跟蹤問題)聯繫一個項目並與他們討論這個問題來完成的。集體努力回到軟件。我們分享代碼 - 我們分享錯誤。 – hakre

+0

是的,我知道這是免費的。我檢查了一下bug跟蹤器,前一段時間有人提出了這個問題。似乎沒有人(甚至項目業主)想要處理它。 –

回答

16

取消建議的功能仍然存在,您會收到警告。所以他們按預期工作。但是在未來的版本中,它們可能會消失。

對於您有時會注意到的其他不贊成使用的語言功能也是如此。這是一種向基於舊版PHP代碼的用戶發出信號變化的方式。

通常情況下,過時的功能會在一段時間後被移除,但不可預測這需要多長時間。我知道至少有一種情況,其中曾經棄用的功能稍後不會被棄用。不過,我認爲這是例外。

因此,如果您看到這些警告,請更新代碼。大多數情況下,PHP文檔都有更多的信息,爲什麼某些東西已被棄用以及做什麼。大多數情況下這是一種改進(例如,在安全性方面),所以如果您關心代碼,那麼您確實應該處理這些警告。

編輯:我認爲值得注意的是在這種情況下也尋找strict standards noticesPHP Manual以及。它們有些相關,因爲這些通知也是語言變化的有用提示。

啓用E_STRICT在開發過程中有一些好處。 STRICT消息將幫助您使用最新最好的建議編碼方法,例如警告您使用棄用的函數。

(從上面的PHP手冊鏈接)

+2

從PHP 5.3開始,拋出的警告是'E_DEPRECATED'或'E_USER_DEPRECATED' - 在以前的版本中,我認爲它是'E_NOTICE' –

3

他們將繼續運行的記錄,但他們可能在將來被刪除,所以應在現有代碼儘快轉換,而不是使用在新代碼中。

1

沒什麼,這只是一個警告。閱讀它爲「此功能仍然適用於此版本的PHP,但所有投注在未來的版本中都是關閉的」。在內部,除了添加棄用警告外,沒有任何區別。

3

不贊成使用的功能可以使用,但有更好的選擇,並且可能會在將來的PHP版本中刪除它們。

1

它們仍然按照'正常'執行。

但是,您需要儘可能快地放棄它們,以便代碼在未來繼續工作。

1

除了發出棄用警告,代碼將正常工作。棄用表示將來可能會刪除相關功能。

This warning是指像

$obj =& new MyClass(); 

的符號不是必需的,因爲PHP 5的任何更多的管線;你可以簡單地寫

$obj = new MyClass(); 
3

我相信PHP繼續執行該函數,同時另外觸發一個錯誤,指出該函數已被棄用。

葉奧爾德版本:

function foo(){ 
    bar(); 
} 

新版本:

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

注:這是可能不是什麼實際上發生幕後的,但它是相對等量。

0

折舊的功能仍然存在,但您會收到警告,這意味着將來這些功能將不可用。

相關問題