Warning: Call-time pass-by-reference has been deprecated解決方法

/*
Warning
: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of getimagesize(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. ind:\vhost\include\inc_custom_fields.php on line178
*/


我把php.ini的display_errors = on改成display_errors = off // (不顯示錯誤)
就不顯示了。

雖然沒有什麼影響。但是心裏還是有個疙瘩。。。
百度上沒有找到什麼答案,然後在google上 找到了。

修改php.ini就可以了。

1. 在PHP.ini中搜索關鍵字 : allow_call_time_pass_reference 沒有的自行建立。
2. 將 Off 改成 On ,Web Server重起就OK了~

allow_call_time_pass_reference = Off 變成 allow_call_time_pass_reference = On


ps

文檔註解爲:

是否啓用在函數調用時強制參數被按照引用傳遞。此方法已不被贊成並在 PHP/Zend 未來的版本中很可能不再支持。鼓勵使用的方法是在函數定義中指定哪些參數應該用引用傳遞。鼓勵大家嘗試關閉此選項並確保腳本能夠正常運行,以確保該腳本也能在未來的版本中運行(每次使用此特性都會收到一條警告,參數會被按值傳遞而不是按照引用傳遞)。

在函數調用時通過引用傳遞參數是不推薦的,因爲它影響到了代碼的整潔。如果函數的參數沒有聲明作爲引用傳遞,函數可以通過未寫入文檔的方法修改其參數。要避免其副作用,最好僅在函數聲明時指定那個參數需要通過引用傳遞。

 

要引用傳入參數,可以兩種方法;

1,

function test1($a,$b){

$b = "fun_test1";

return;

}

$a = "a_value";

$b = "b_value";

test1($a,&$b);

 

2,

function test2($a,&$b){

$b = "fun_test2";

return;

}

$a = "a_value";

$b = "b_value";

test2($a,$b);


第一種情況就有可能會出現“Call-time pass-by-reference has been deprecated”這樣的警告,所以建議使用第二種。

具體爲什麼第一個會報這樣的錯誤呢?


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章