引用とは
PHP における参照とは、Unix におけるファイル名とファイル自体に似た、同じ変数コンテンツが異なる変数名でアクセスされることを意味します (変数名はディレクトリ エントリであり、変数コンテンツはファイル自体です。つまり、同じファイルは異なるディレクトリ エントリでアクセスされます)。Unix ファイル システムのハード リンクと考えることができます。
ファイル システムには 2 種類のリンクがあり、1 つはハード リンクと呼ばれ、もう 1 つはシンボリック リンクと呼ばれます。デフォルトでは、ln コマンドはハード リンクを生成します。ハード接続とは、インデックス ノードを介した接続を指します。 Linux ファイル システムでは、ディスク パーティションに格納されているファイルには、その種類に関係なく、インデックス ノード番号 (InodeIndex) と呼ばれる番号が割り当てられます。 Linux では、同じインデックス ノードを指す複数のファイル名が存在します。通常、この接続はハード接続です。ハード リンクの機能は、ファイルに複数の有効なパス名を持たせることで、ユーザーが重要なファイルへのハード リンクを確立して「誤って削除」を防ぐことができます。その理由は、前述したように、ディレクトリのインデックス ノードへの接続が複数あるためです。 1 つの接続だけを削除しても、インデックス ノード自体や他の接続には影響しません。最後の接続が削除された場合にのみ、ファイルのデータ ブロックとディレクトリ接続が解放されます。つまり、ファイルは実際に削除されます。ハード接続に対応して、Lnux システムにはシンボリック リンク (Symbilc Link) と呼ばれる別の接続があり、ソフト リンクとも呼ばれます。ソフト リンク ファイルは Windows のショートカットに似ています。これは実際には特殊ファイルの一種です。シンボリック リンクでは、ファイルは実際には別のファイルの位置情報を含むテキスト ファイルです。
引用符は主に 3 つの目的で使用されます:
同じコンテンツを指します
Reference を使用すると、$a = & $b
,意味着$a
和$b
同じ変数を指すなど、2 つの変数が同じコンテンツを指すことができます。
未定義の変数が参照によって割り当てられた場合、参照パラメータによって渡された場合、または参照によって返された場合、変数は自動的に作成されます。たとえば、次のプログラムは変数 $a
を自動的に作成します。
PHP 5 以降、new
演算子は自動的に参照を返します。
参照渡し
変数の参照渡しは、次のコードによって実現できます。foo
関数の変数 $var
は、foo
函数中变量$var
指向了和$a
が指すのと同じ内容を指します。 。
関数定義のみに参照記号 &
,在函数调用时没有引用符号&
が付いています。
参照による返却
参照を返すには、次の構文を使用します。
リーリー参照による戻りはパラメータの受け渡しとは異なることに注意してください。&
シンボルは関数定義と関数呼び出しの両方で使用されます (通常のコピーの代わりに参照が返されることを示します)。
引用解除
が参照の場合、変数名と変数の内容の間のバインディングが壊れるだけで、変数の内容は破壊されません。 unset()
多くの PHP 構文構造は、
ポインターなどの参照メカニズムを通じて実装されます。 global
引用和$this
は常にそれを呼び出すオブジェクトへの参照になります。 global $var
声明一个变量时,实际上是建立了一个到全局变量的引用,和$var = & $GLOBALS['var']
作用是相同的。在对象方法中,$this
上記は、リファレンス - PHP マニュアル ノートを内容の側面も含めて紹介しています。PHP チュートリアルに興味のある友人の役に立てば幸いです。