PHP のメソッドアクセスの
`? " />
PHP の :: (二重コロン) と -> (矢印) の解読
PHP では、クラス メソッドへのアクセスは 2 つの異なる方法で行うことができます方法: :: (二重コロン) と -> (矢印) を詳しく見てみましょう。
スコープと使用法
適切な演算子を決定する主な要素は、プロパティや非静的メソッドなどのメンバーが使用されるコンテキストです。逆に、静的プロパティやメソッドなどのクラス メンバーの場合は、:: が使用されます。演算子.
構文解釈
-> の左側のオペランドがオブジェクト インスタンスの場合、アクセスされるメソッドがそのインスタンスに属していることを示します。 :: メソッドが特定のクラスではなくクラス自体で呼び出されることを示唆します。 instance.
静的メンバー アクセス
通常、:: は静的メンバー アクセスに使用されますが、まれに、:: を使用してインスタンス メンバーにアクセスすることもできます。例としては、派生クラス内から親クラスのインスタンス メソッドの実装にアクセスする場合があります。
メソッド呼び出しセマンティクス
-> のセマンティクス。演算子は :: の演算子よりも複雑です。 -> 経由の通話ターゲット メソッドが静的として宣言されておらず、互換性のあるオブジェクト コンテキストが存在する場合、インスタンス呼び出しが行われます。それ以外の場合、静的呼び出しとして扱われます。
例
次のコード スニペットを考えてみましょう。
class A { public $prop_instance; public function func_instance() { echo "in ", __METHOD__, "\n"; } } class B extends A { public static $prop_static; public function func_static() { echo "in ", __METHOD__, "\n"; } } $a = new A; $b = new B; echo '$a->prop_instance: ', $a->prop_instance, "\n"; echo 'B::$prop_static: ', B::$prop_static, "\n"; $b->func_instance(); B::func_static();
出力:
$a->prop_instance: B::$prop_static: in B::func_instance in B::func_static
-> の一貫した使用法たとえば、メンバーや静的メンバーの :: は明確さを保証し、曖昧な解釈を防ぎます。
以上がPHP でのメソッド アクセスに `::` を使用するのと `->` を使用するのはどちらの場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。