関数呼び出しの中で変数値を設定する - これはあまり表示されませんが、これは良い方法と考えられますか?PHP - 関数の引数に値を代入する - 良い方法ですか?
function myUpdate($status){
...
}
myUpdate($status = 'live');
私は個人的には説明的なので好きです。私はそれをもっと頻繁に、すなわち、関数定義にデフォルト値を割り当てることを頻繁に見ます。
関数呼び出しの中で変数値を設定する - これはあまり表示されませんが、これは良い方法と考えられますか?PHP - 関数の引数に値を代入する - 良い方法ですか?
function myUpdate($status){
...
}
myUpdate($status = 'live');
私は個人的には説明的なので好きです。私はそれをもっと頻繁に、すなわち、関数定義にデフォルト値を割り当てることを頻繁に見ます。
。 phはで、はキーワード引数をサポートしていないので、奇妙なことにつながる可能性があります。ポイントのケース:
function f($a, $b){
echo 'a: ' . $a . "\n";
echo 'b: ' . $b . "\n";
}
f($b='b-value', $a='a-value');
このプログラムは出力だけ
a: b-value
b: a-value
もは、グローバルな文脈で変数$b
と$a
を定義していません。これは
f($b='b-value', $a='a-value');
// is the same thing as ...
$b = 'b-value';
$a = 'a-value';
f($b, $a);
一つは覚えてメソッドの引数を容易にするために行うことができますいくつかの良い習慣がありますので、次のとおりです。
それはコードの難読化ではありません。関数に3つのブールパラメータがある場合、記述的な方法で変数を追加すると、実際に読みやすくなります。 –
@Darhazer誰かがメソッドのシグネチャを変更するまで、読みやすさが向上します。その後、この習慣は*実際にメソッドのシグネチャについてプログラマに誤解を与えるでしょう。 – phihag
真剣に冗談を言っているのはなぜですか?あなたはそれがデフォルト値を割り当てることとはまったく異なる何かを認識しなければなりません。ここでは、変数に値を代入し、その変数を関数に渡しています。その結果、関数呼び出しの後には、$status
varialbeがまだ定義されています。
myUpdate($status = 'live');
echo $status; // "live"
これが何をしたい場合でも、私はそれだけで二列にそれを分割するよりも少ないわかりやすいかなと思います。
まあ、デフォルト値は違うものです。
// if you call myUpdate without argument, it will have $status with value live
function myUpdate($status = 'live'){
}
は、このコール:呼び出しの後、あなたはmyUpdate($status = 'live');
のようにそれを呼び出す場合は、$status
VARを維持することが唯一の違いで
myUpdate('live');
:
myUpdate($status = 'live');
に相当します関数内ではなく関数を呼び出したスコープ内に値live
があります。
$status = 'live';
myUpdate($status);
いいえ、余分なコードではありません。試してみてください:
myUpdate('live' /*status*/, 42 /*maxTries*/);
それとも、本当に名前付きパラメータを望んでいた場合、あなたはマップを使用することができます
myUpdate(array(
'status' => 'live'
));
通常とにかく、それは型の安全性を殺すだろうが、PHPは、いずれかを持っていません。
うわー、これは動作しますか? :O – Rijk
これを行うことは、関数の実行には何ら影響を及ぼさず、呼び出し側スコープ内にローカル変数のみを割り当てることを知っていますか? –
@Rijkはい、これはPHPでの代入の結果が割り当てられた値であるために機能します。 – Phil