2009-07-08 8 views

答えて

7

オブジェクトのみが参照渡しされます。

PHPがコピーオンライトを使用するため、参照に変更することでパフォーマンスが向上するわけではありませんので、変数を変更するとコピーが作成されます。

あなたのコードを関数に分割しても、その観点から遅くなることはありません。 関数を呼び出すためのオーバーヘッドはわずかですが、10,000を呼び出すループ内にいなければ、心配する必要はないでしょう。

+2

オブジェクトは参照渡しされません。オブジェクトは参照型ですが、特に指定しない限り、値は関数のパラメータとして渡されます。 – Joseph

+0

技術的には参照渡しではありませんが、十分に近いです。これはPHP 5の時点で当てはまります - PHP 4は異なっていました。 – Greg

1

はい、パラメータの前にアンパサンド&を使用して、参照渡しする関数を明示的に定義しないか、引数の前にアンパサンドがある関数を呼び出さない限り、プリミティブは渡されます。 (後者は推奨されていません)

this part of the documentationを参照してください。それは多くの場合、ほとんどの目的のためにそのように考えることができても

EDIT

はまた、PHPに「オブジェクトは参照渡しされている」という文は、簡略化のビットです。このchapter of the documentationはその違いを説明しています。

1

参照渡しは実際にはPHPで値渡しよりも遅くなります。私はこの主張の正しい引用を見つけることができません。 PHPマニュアルの「参考文献」セクションのどこかにあります。