PHP5で参照により変数を渡す必要がありますか?
-
23-08-2019 - |
質問
PHP5が「書き込みでコピー」を使用し、参照を通過すると、ゲインよりも多くのパフォーマンスペナルティが発生すると、なぜパスごとに参照する必要がありますか?後で設定された関数を呼び出すことなく変更できる属性を複数の値またはクラスを返すコールバック関数以外(悪い練習、私は知っています)、私が欠けている使用はありますか?
解決
結果を変更する場合は、パスごとの参照を使用します。それだけです。
PHPオブジェクトでもそうであることを覚えておいてください いつも パスバイレファレンス。
個人的には、PHPの値を暗黙的にコピーするシステムを見つけます(偶発的な変更を防御すると思います)。しかし、オブジェクトがPHPの通常の操作と異なることは興味深いと思います。PHPの暗黙的なコピーメカニズムが実際には良いシステムではないという証拠としてそれをとっています。
他のヒント
配列を埋める再帰関数?一度、そのようなことを書くことを覚えておいてください。
部分的に満たされた配列の数百コピーを持ち、毎ターンでパーツをコピー、スプライシング、結合することには意味がありません。
オブジェクトを渡すときでさえ、違いがあります。
この例を試してください:
class Penguin { }
$a = new Penguin();
function one($a)
{
$a = null;
}
function two(&$a)
{
$a = null;
}
var_dump($a);
one($a);
var_dump($a);
two($a);
var_dump($a);
結果は次のとおりです。
object(Penguin)#1 (0) {}
object(Penguin)#1 (0) {}
NULL
参照によってオブジェクトへの参照を含む変数を渡すと、オブジェクトへの参照を変更できます。
所属していません StackOverflow