質問: ### 知りたいこと Wordpressのプラグインで、add_action()などの関数の引数に自身のクラスインスタンス$thisを渡す際、&$thisとして参照渡しをしているものを見かけます。 なぜ参照渡しをするのでしょうか? ### 参考コード ``` add_action( 'admin_menu', array( &$this, 'hoge' ) ); public function hoge() {~~~~} ``` ### 自分の考え 意味はなく、php4の時代になんでも&をつけてやりとりしていた頃の名残りだと思います。 ### 参考プラグイン 発見したのは、以下のプラグインです。 shortcodes-ultimateプラグイン shortcodes-ultimate/inc/vendor/sunrise.php のL50付近にその記述があります。 ### 追記 add_actionの定義部から追ってみましたが、引数の配列の第1要素である$thisは、最終的に spl_object_hash関数に渡されて、対象オブジェクトのオブジェクトIDを取得するのに使われていただけでした。 wp-includes/plugin.php中 これだけ見ると、やはり意味がないように思えます。
回答: オブジェクトを渡す場合は、表面上の挙動に違いはありませんし、パフォーマンスも大差ありません。 なぜなら、変数には、オブジェクトIDが格納されており、そのIDをコピーするか、ID自体を参照させるかの違いだからです。 あなたの仰るとおり、PHP5以前はオブジェクト自体をコピーするという仕様だったため、参照渡しが当たり前でした。PHP5からは上記のような仕様になりましたので、おそらく名残だと思います。