2009-06-16 5 views
2

私はPHPでこのコードを継承しました。これは、グーグルAPIに何らかの種類のWebサービスコールを行うようです。私はかなりPHPの専門家ではないし、私は具体的に次の行に関連するいくつかの構文の質問があります。 $ soapClients = & APIlityClients :: getClients();"&"はPHPのクラスの前で何を意味しますか?

私はダブル "::" APIlityClientsが静的なクラスであることを示していると理解していますが、APIlityClientsの前にある "&"の意味がわかりません。

答えて

5

PHPで変数の前にアンパサンドを使用すると、その変数への参照が作成されます。前PHP5へ

$foo = 'bar'; 
$baz = &$foo; 

echo $foo //bar 
echo $baz //bar 

$foo = 'foobazbar'; 
echo $foo //foobazbar 
echo $baz //foobazbar 

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

しかし、その前にアンパサンドを含むクラスをインスタンス化することによって、返されたオブジェクトへの参照を作成することができ、他の言語のオブジェクトのように動作します。これは、OOPのような効果を達成したり、パフォーマンスを向上させるために、PHP5よりも前の一般的な手法でした。

4

PHPの値をコピーするのではなく、何かを参照するPHPのバージョンです。この場合、&は、戻り値自体のコピーではなく、戻り値APIlityClients::getClients()への参照を取得します。

1

&は、pass by reference rather than by valueを示す。クラスはデフォルトでそのバージョンでは参照渡しされていますが、以前のバージョンでは渡されていないため、PHP5ではあまり適用されません。

+0

しかし、OP質問の場合のように参照で返信することもできます。私の答えのリンクを参照してください。 –

0

&は参考情報です。参照は、複数の変数が同じオブジェクトを指すようにするために使用されます。そして、それは(getClientsから返された値を参照することだ -

this pageは私が

また、それは「のアドレス」を意味し、一般的な

2

では、PHPでの参照の詳細については、http://us3.php.net/manual/en/language.references.phpを見ることができますがより良いことを説明します)呼び出しではなく、APllityClientsクラスそのものです。

基本的には、返された値のコピーを作成するのではなく、getClients()から返されるものの参照に$ soapClientsを代入するのが一般的です。

関連する問題