2010-12-15 1 views
1

はPHPで、すべてのオブジェクトの変数は、実際のオブジェクト(?なし)、言語は、これが暗黙のうちにハンドルへのポインタである(右?)、まだ私はこのようなパラメータの参照を指定する多くのPHPコードを参照してください。PHPでオブジェクトの参照を取得するために&を使用するのは冗長ですか?

function someMethod(SomeClass& $obj) 
{ 
//... 
} 

私はまた、このようなものを見てきました:

function add() 
{ 
$object = new SomeClass; 
self::$objects[] =& $object; 
} 

は私が間違っているなら、私を修正しますが、ここではどんな違いがないだろう。

self::$objects[] =& new SomeClass 
self::$objects[] = new SomeClass 

は私が右アム??????

もう一つは、私がテストした:

class SomeClass{} 
$obj =& new SomeClass; // is in fact deprecated, doesn't work 

$obj = new SomeClass; 
$obj2 =& $obj; // works, but should also be deprecated!! No? 
+0

なぜanoに '=&'変数は廃止予定ですか? – BoltClock

+0

@BoltClock:変数が既にオブジェクトへのポインタである場合。 – fabio

+0

@ user532722:それはオブジェクトではなく、 'value type'変数ですか? – zerkms

答えて

2

PHP5で、はい、それは冗長で無意味です。

+0

あなたの答えにとどまります – fabio

+0

いいえ、そうではありません。 '&'はオブジェクト参照とは全く異なる変数参照を作成します。 http://stackoverflow.com/questions/3611986/in-php-can-someone-explain-cloning-vs-pointer-reference/3612129#3612129 – ircmaxell

+0

@ircmaxell:違いの詳細な内訳については、この答えを参照してください例にOPは私たちにサンプルを与えました - 違いはありません。 – zerkms

0

このページはあなたに役立つかもしれない:あなたは、新たに宣言されたオブジェクトともう= &を使用しないように http://www.php.net/manual/en/language.operators.assignment.php

newは自動的に、参照を返します。私の知る限りでは推奨されません参照に関連

+0

'&= '=' = &' ; - !)' =& '(つまりOPが実際にある)について尋ねるものです2つの演算子' = 'と'& 'あなたは、右の私のミスですが、ポイントがまだ有効である – zerkms

+0

。一定。 – zsalzbank

+1

@zerkms:私はそれも2つの演算子だと考えました( '$ somevar = $ someothervar'への参照)。しかし、Artefactoによれば、実際には単一の演算子です。[この質問](http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php)に関するコメントを参照してください。 – BoltClock

1

唯一のことは、コール時間は参照渡し(例えばsomefunction(&$var);

あなたのコードサンプルは、おそらくPHP 4の互換性のため&シンボルを持っている。それはdoesnのTあなたは(PHP 5の値で参照を渡し、参照によってオブジェクトを渡す&を用い間)わずか差が付与されたPHP 5におけるオブジェクト参照で動作する&かを使用するかどうかの違いの多くを作るが、ほとんどの場合、PHP 5で実行するとコードに影響を与えるべきではありません。

関連する問題