php.ini中allow_call_time_pass_reference參數

從php手冊中能夠找到:
1)手冊中建議區分開發和產品兩種環境下的配置,以及默認配置
; allow_call_time_pass_reference
;   Default Value: On    默認開啓
;   Development Value: Off    開發環境:關閉
;   Production Value: Off    產品環境:關閉
2) 實際中配置狀況
allow_call_time_pass_reference = off    關閉


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

4)建議:
    在函數調用時經過引用傳遞參數是不推薦的,由於它影響到了代碼的整潔。若是函數的參數沒有聲明做爲引用傳遞,函數能夠經過未寫入文檔的方法修改其參數。要避免其反作用,最好僅在函數聲明時指定那個參數須要經過引用傳遞。php

當allow_call_time_pass_reference=Off時函數

<?php
function abc($a,$b){
    echo "$a/n";
    echo "$b/n";
    $b = 'cde';
}

$a = 'abc';
$b = "bcd";

//很差的用法,會引起一個php warnning
abc($a ,&$b);

echo "$b/n";
?>

要想經過引用來傳遞參數$b,程序可改成:code

<?php
function abc($a,& $b){
    echo "$a/n";
    echo "$b/n";
    $b = 'cde';
}

$a = 'abc';
$b = "bcd";
//正確的用法
abc($a ,$b);

echo "$b/n";
//output is:
//abc
//bcd
//cde
?>
相關文章
相關標籤/搜索