4

古い PHP 4.x コードを PHP 5.3 用に変換しています。私は以下に出くわしましたが、それが何をするのかわかりません。

$variable =& new ClassName();

それとの違いは何ですか:

$variable = new ClassName();
4

2 に答える 2

6

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 &=.

言い換えれば、オブジェクトをインスタンス化するときだけではなく、用途があります。その使用のために、廃止されました。

于 2009-12-10T05:12:47.223 に答える
3

PHP4 では、オブジェクトは参照渡しではなく、デフォルトで値渡しでした。これは、割り当て時にオブジェクトのコピーが作成されたことを意味します。オブジェクトを値ではなく参照で渡したい場合は、&演算子を使用できます。PHP5 では、オブジェクトはデフォルトで参照によって渡されます。そのため&、オブジェクトを扱うときに は不要になりました。プリミティブ (または PHP の世界でよく呼ばれるスカラー) は、デフォルトで値渡しのままです。

オブジェクト指向の PHP4 コードを PHP5 に移行すると、かなりの数&の が削除されることがわかりました。

于 2009-12-10T05:28:09.257 に答える