古い PHP 4.x コードを PHP 5.3 用に変換しています。私は以下に出くわしましたが、それが何をするのかわかりません。
$variable =& new ClassName();
それとの違いは何ですか:
$variable = new ClassName();
古い PHP 4.x コードを PHP 5.3 用に変換しています。私は以下に出くわしましたが、それが何をするのかわかりません。
$variable =& new ClassName();
それとの違いは何ですか:
$variable = new ClassName();
Ye Olde Days of PHP4 では、オブジェクトを構築するときに =& が必要でした。PHP 5 では、そうではありません。
=&
参照割り当てを行います。
例えば:
$a = 'a';
$b =& $a;
$b = 'b';
echo $a; // Prints 'b', since a and b have been linked by &=.
言い換えれば、オブジェクトをインスタンス化するときだけではなく、用途があります。その使用のために、廃止されました。
PHP4 では、オブジェクトは参照渡しではなく、デフォルトで値渡しでした。これは、割り当て時にオブジェクトのコピーが作成されたことを意味します。オブジェクトを値ではなく参照で渡したい場合は、&
演算子を使用できます。PHP5 では、オブジェクトはデフォルトで参照によって渡されます。そのため&
、オブジェクトを扱うときに は不要になりました。プリミティブ (または PHP の世界でよく呼ばれるスカラー) は、デフォルトで値渡しのままです。
オブジェクト指向の PHP4 コードを PHP5 に移行すると、かなりの数&
の が削除されることがわかりました。