phpの中でreturn、require、includeは括弧をプラスしませんと括弧の違いをプラスします.
7146 ワード
phpの中でreturn、require、includeは括弧をプラスしませんと括弧の違いをプラスします.
2010年6月30日
小旅団
コメント
コメントを読む
コードの仕様を整理する時にこのようにします.リターン値はなるべく括弧を入れないでください.これはどういう理由ですか?
公式マニュアルを見て、http://cn2.php.net/manual/en/function.return.php で見つけました.
Note:You shound never use parentheses around your return variable when returning by reference,as this will not work.You can only return variables by reference,not the reult of a statement.If you use return($a) then you’re not returning a variable,but the reult of the expression ($a) (which is、of course、the value of $a)
中国語に訳せば、
注意: 参照で値を返すときは、かっこを使わないようにしてください.ステートメントの結果ではなく参照で変数を返します.参照変数だけを返します.式の結果ではなく、参照変数だけを返します.使うなら return($a) の場合は、変数を返すのではなく、式を返します. ($a) の値(もちろん、この値も $a. の値を返します
この文はまだよく分からないかもしれません.以下のテストコードを見てください.
string(3)「hao」string(4)「good」string(4)「good」
戻り変数に括弧を入れると、コードは以下の通りです.
string(3)「hao」string(3)「hao」string(4)「good」
最初の例では、「return$u SERVER['HTTPuHOST'」;カギカッコはつけていません.帰りは$uです.SERVER['HTTPuHOST']の引用は、ここで$goodと$uSERVER['HTTPuHOST']は同じ変数を指します.だから修正しましたSERVER['HTTPuHOST']、$goodの値が変化します.
第二の例では、returnの後の変数に括弧を付けると、まず括弧で囲まれたこの表式の値を計算し、計算後の結果を返します.このように$goodは"($u SERVER['HTTPuHOST])"計算の結果、および$uSERVER['HTTPuHOST']が指す変数は同じではなく、自然に修正されました.SERVER['HTTPuHOST']の値は、goodの値はそのままです.ですから、保険のために、リターンは括弧を使わずに括弧を入れられます.
上の列から、リキッドincludeの後ろに括弧を入れると、括弧をつけないという違いが分かります.
include「a.php」 //直接a.phpを含める
include(「a.php」)//まず'(''a.php')'の値を計算します.その結果はa.phpに違いないです.そしてinclude'a.php'にあります.
requireの道理はincludeと同じです.
このため、includeとrequireの後のファイルパスに引用符を付けないと実行結果に影響がありません(引用の問題はありません)が、実行ステップが増加し、効率が低下します.
以上の分析を総合して、includeであろうと、requireであろうと、returnであろうと、このような操作符に対して、後は括弧をつけないで括弧を入れます.includeとrequireの後ろに括弧を入れないと実行結果は変わりませんが、効率は低いです.また、returnは参照を返す時に括弧を入れると、効率が低いだけでなく、論理エラーを引き起こします.
2010年6月30日
小旅団
コメント
コメントを読む
コードの仕様を整理する時にこのようにします.リターン値はなるべく括弧を入れないでください.これはどういう理由ですか?
公式マニュアルを見て、http://cn2.php.net/manual/en/function.return.php で見つけました.
Note:You shound never use parentheses around your return variable when returning by reference,as this will not work.You can only return variables by reference,not the reult of a statement.If you use return($a) then you’re not returning a variable,but the reult of the expression ($a) (which is、of course、the value of $a)
中国語に訳せば、
注意: 参照で値を返すときは、かっこを使わないようにしてください.ステートメントの結果ではなく参照で変数を返します.参照変数だけを返します.式の結果ではなく、参照変数だけを返します.使うなら return($a) の場合は、変数を返すのではなく、式を返します. ($a) の値(もちろん、この値も $a. の値を返します
この文はまだよく分からないかもしれません.以下のテストコードを見てください.
1
2
3
4
5
6
7
8
9
10
11
12
$good = 'good chuzhi';
$_SERVER['HTTP_HOST'] = 'hao';
function &changeVariable()
{
return $_SERVER['HTTP_HOST'];
}
$good = &changeVariable();
var_dump($good);
$_SERVER['HTTP_HOST'] = 'good';
var_dump($good,$_SERVER['HTTP_HOST']);
このコード出力:string(3)「hao」string(4)「good」string(4)「good」
戻り変数に括弧を入れると、コードは以下の通りです.
1
2
3
4
5
6
7
8
9
10
11
12
$good = 'good chuzhi';
$_SERVER['HTTP_HOST'] = 'hao';
function &changeVariable()
{
return ($_SERVER['HTTP_HOST']);
}
$good = &changeVariable();
var_dump($good);
$_SERVER['HTTP_HOST'] = 'good';
var_dump($good,$_SERVER['HTTP_HOST']);
このコード出力:string(3)「hao」string(3)「hao」string(4)「good」
最初の例では、「return$u SERVER['HTTPuHOST'」;カギカッコはつけていません.帰りは$uです.SERVER['HTTPuHOST']の引用は、ここで$goodと$uSERVER['HTTPuHOST']は同じ変数を指します.だから修正しましたSERVER['HTTPuHOST']、$goodの値が変化します.
第二の例では、returnの後の変数に括弧を付けると、まず括弧で囲まれたこの表式の値を計算し、計算後の結果を返します.このように$goodは"($u SERVER['HTTPuHOST])"計算の結果、および$uSERVER['HTTPuHOST']が指す変数は同じではなく、自然に修正されました.SERVER['HTTPuHOST']の値は、goodの値はそのままです.ですから、保険のために、リターンは括弧を使わずに括弧を入れられます.
上の列から、リキッドincludeの後ろに括弧を入れると、括弧をつけないという違いが分かります.
include「a.php」 //直接a.phpを含める
include(「a.php」)//まず'(''a.php')'の値を計算します.その結果はa.phpに違いないです.そしてinclude'a.php'にあります.
requireの道理はincludeと同じです.
このため、includeとrequireの後のファイルパスに引用符を付けないと実行結果に影響がありません(引用の問題はありません)が、実行ステップが増加し、効率が低下します.
以上の分析を総合して、includeであろうと、requireであろうと、returnであろうと、このような操作符に対して、後は括弧をつけないで括弧を入れます.includeとrequireの後ろに括弧を入れないと実行結果は変わりませんが、効率は低いです.また、returnは参照を返す時に括弧を入れると、効率が低いだけでなく、論理エラーを引き起こします.