*
+---------------------------------------------- -- --------------------------------+
| この記事は Haohappy によって読まれています<<コア PHP プログラミング> ;>
| = 章のクラスとオブジェクトからのメモ
| = 不必要なトラブルを避けるため、転載はご遠慮ください
| PHP 愛好家の皆さんと一緒に進歩しましょう
| = PHP5 Research Center: http://blog.csdn.net/haohappy2004
+---------- ------ -------------------------------------------- ------ --+
*/
セクション 9 -- バインディング
アクセスを制限することに加えて、アクセス メソッドは、サブクラスによって呼び出されるメソッド、またはサブクラスによってアクセスされるプロパティも決定します。関数呼び出しと関数自体の間、およびメンバーアクセスと変数の間の関係は、コンピューター言語ではバインディングと呼ばれます。静的バインディングと動的バインディングは、データ構造とデータの間に発生します。静的バインディング バインディングはコンパイル時に行われるため、関数呼び出しと関数本体、またはメモリ内の変数とブロックを対象とします。PHP は静的バインディングを使用しません。ただし、静的バインディングはシミュレートできます。
動的バインディングは、実行時に利用可能な情報のみを使用して、実行時に生成されるアクセス要求に対して行われます。動的バインディングは、どのメソッドが呼び出されるか、またはどのプロパティがアクセスされるかを決定することを意味します。
パブリック メンバーと保護されたメンバーは、動的バインディングを使用して、サブクラスでオーバーライドされるメソッドにアクセスする場合と同様に動作します。記述されたメンバーはサブクラスのインスタンスであり、(親クラスのメンバーにアクセスする代わりに) サブクラスのメンバーがアクセスされます。
このコードは、「Hey! I am Son.」を出力します。 Son のインスタンスである getSalutation を呼び出し、Salutation が public の場合、PHP はそのメソッドへの Bind を識別する呼び出しと同じ結果を生成します。
サブクラス内でアクセスメソッドをprotectedからpublicに弱めたとしても、アクセスメソッドを使用する原理上、クラスメンバーのアクセス制限を強化することは不可能です。モードを public から protected に変更します。
リスト 6.10 動的バインディング