4

関数に引数を渡すとき、関数がその引数の値を変更することになっていない場合、規則は値を渡すことです。関数がその変数を変更する場合にのみ、&byrefを渡します。

一方、参照渡しの場合、PHPは、値渡しの場合のように変数のコピーを複製するのではなく、ポインターを使用して動作することを私たちは知っています。

これは私の頭の中に疑問を投げかけます。速度と効率の目的で、特定の変数を参照によって関数に渡す必要がありますが、変更する必要はありません。

アイデアに夢中になることなく、それを完全に悪用することなく、ここで話している変数または変数の種類についての参照フレームを配置したいと思います。

それらは主に$dbh(データベースハンドル)と非常に大きな変数です。実を言うと、$ dbhだけです!本当。

あなたの意見では、これは良い習慣だと思いますか、それとも決して実践されるべきではないと思いますか。

この問題をコードスニペットに落とし込み、コメントを付けましょう。

//$dbhがmysql接続のdatabase_handleであると想定します

for ($userID = 1; $userID <= 1000; $userID++) {

        display_name ($dbh,"users",$userID)// outputs the name of the passed userid 
}

ここで、display_name関数は$ dbhをrefまたはvalueで取得する必要がありますか?

4

2 に答える 2

5

PHPはコピーオンライトを使用します。これは、基本的に、変数が変更されていない限り、値で渡すことは参照で渡すことと同じ効果があることを意味します。つまり、説明するシナリオで参照を使用してもパフォーマンスは向上しません(実際、一部のレポート参照は遅くなる可能性があります)

于 2012-08-27T18:13:20.960 に答える
1

それらは主に$dbh(データベースハンドル)と非常に大きな変数です。実を言うと、$ dbhだけです!本当。

何が大きいと思いますか?「ハンドル」は通常、ポインタ(またはポインタへのポインタ)のようなもの、非常に小さなものを意味します。

于 2012-08-28T01:05:23.917 に答える