コピーオンライトは基本的にパフォーマンスを同等にするため、PHPで参照を渡すのは、技術的な理由がある場合にのみ行うことを十分に説明しています。私が理解していることから、それが変更されない場合、オブジェクトをコピーすることはありません。
しかし、関数が変数を変更しても、コードがそれを二度と使用しない/変更された部分を使用しない場合はどうなりますか?オリジナルが変更されているかどうかはコードに関係ありません。はい、PHPオプティマイザーがこの状況を考慮に入れている可能性はありますが、私はそれを信じる理由はありません。
また、単一の参照を渡すことは、巨大な配列やオブジェクトをコピーするよりもはるかに高速になるはずです。
それで、これは参照で渡すのに良い状況ですか?
たとえば、DomCrawlerを渡すとします(この特定の場合に暗黙的に参照によって渡されることを除いて、大きな[html形式の]文字列を超えない)。少しクロールして、いくつかの情報を抽出します。多くの場合、クローラーを再び使用しないため、クローラーを元の位置にリセットする必要はありません。また、後者でDOMCrawlerを使用していると想像してください。そこから、URIを読み取ります。関数はこれを変更しなかったので、参照または値による受け渡しは依然として同等ですが、参照による受け渡しは大幅に最適ではありませんか?この状況は、オプティマイザーが見つけるのは非常に難しいと思います。