下面的代碼報(bào)錯(cuò):Fatal error: Call-time pass-by-reference has been removed
function myFunc($arg) { do something... }
myFunc(&$arg);//Call myFunc
或
function myFunc(&$arg) { do something... }
myFunc(&$arg);//Call myFunc
錯(cuò)誤分析: allow_call_time_pass_reference boolean 在函數(shù)調(diào)用時(shí)參數(shù)被按照引用傳遞時(shí)是否發(fā)出警告。此方法已不被贊成并在 php/Zend 未來的版本中很可能不再支持。鼓勵(lì)使用的方法是在函數(shù)定義中指定哪些參數(shù)應(yīng)該用引用傳遞。鼓勵(lì)大家嘗試關(guān)閉此選項(xiàng)并確保腳本能夠正常運(yùn)行,以確保該腳本也能在未來的版本中運(yùn)行(每次使用此特性都會(huì)收到一條警告)。 在函數(shù)調(diào)用時(shí)通過引用傳遞參數(shù)是不推薦的,因?yàn)樗绊懙搅舜a的整潔。如果函數(shù)的參數(shù)沒有聲明作為引用傳遞,函數(shù)可以通過未寫入文檔的方法修改其參數(shù)。要避免其副作用,最好僅在函數(shù)聲明時(shí)指定那個(gè)參數(shù)需要通過引用傳遞。 Changelog for allow_call_time_pass_reference 版本 說明 5.4.0 從 PHP 中移除。 5.3.0 Emits an E_DEPRECATED level error. 5.0.0 Deprecated, and generates an E_COMPILE_WARNING level error.函數(shù)調(diào)用時(shí)引用傳參已經(jīng)被移除了,就是不能通過function(&$a)這種方式傳參調(diào)用函數(shù).解決方案:查看你的php.ini配置文件,把其中的 allow_call_time_pass_reference參數(shù)調(diào)整為true,并重啟服務(wù)器試試。 此外,以前的php代碼在升級(jí)到5.4版本的php可能會(huì)出現(xiàn)這種錯(cuò)誤:當(dāng)我們這樣使用函數(shù)(或者類)的話,會(huì)產(chǎn)生一個(gè)error:
myFunc(&$arg);//Call myFunc
實(shí)際上,這樣用本來就是錯(cuò)的,只是之前的錯(cuò)誤級(jí)別僅僅是Deprecated而已。而正確的使用方法應(yīng)該是在函數(shù)定義時(shí):
function myFunc(&$arg) { do something... }
而在調(diào)用時(shí)直接傳參就行了:
myFunc($var);//Call myFunc
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注