php =& イコールアンパサンド で参照渡し | クズリーマンのカス備忘録

php =& イコールアンパサンド で参照渡し

php-logo php
スポンサーリンク

php-logo

意味

変数やオブジェクトなどを参照渡しする。

# 下記はどちらも同じ挙動になります
$result =& $value;
$result = &$value;

qiita

 

php7では利用不可

new 文の結果を参照渡しで変数に代入することができなくなりました。 by reference:

phpマニュアル

 

蛇足

古いソースで

$a =& new classC();

みたいなことしてたけど意味あるのか?

いろんな場所からインスタンス化されて、プロパティが変化しても同じ値を参照できるということかな…

でも上記のqiitaだと

オブジェクトは元々参照型なので、「&」をつけなくても参照されます。

って書いてあるけど、、、php7の話であってphp5以前だとそうではないのかな…

 

追記

はい遺物だと、すべてのオブジェクトは、PHP 5で参照によって渡されます– RageZ 25 10月。11

php5ではすでに参照型。php4ではそうではないみたい。

 

PHP5より前は、PHPのクラスからオブジェクトを作成すると、そのオブジェクトは値によって他の変数に渡されていました。他のほとんどのオブジェクト指向(Java、C#など)言語で標準となっているように、オブジェクトは参照ではありませんでした。

stackoverrun

 

とうことはphp7化する際には「&」を外すだけでいいな。

 

スッキリ。

コメント

タイトルとURLをコピーしました