PHP의 메소드 액세스에 대한
` PHP의 메소드 액세스에 대해? " />
PHP에서 ::(이중 콜론)과 ->(화살표) 해독
PHP에서 클래스 메소드에 액세스하는 것은 두 가지 별개의 방식으로 수행될 수 있습니다. 방법: ::(이중 콜론) 및 ->
범위 및 사용법
적절한 연산자를 결정하는 주요 요소는 속성 및 비정적 메서드와 같은 멤버가 사용되는 컨텍스트입니다. , -> 정적 속성 및 메서드와 같은 클래스 멤버의 경우 ::가 선호됩니다.
구문적 해석
->의 왼쪽 피연산자가 객체 인스턴스인 경우, 액세스되는 메서드가 해당 인스턴스에 속한다는 것을 나타냅니다. :: 메서드가 특정 인스턴스가 아닌 클래스 자체에서 호출되는 것을 제안합니다.
정적 멤버 액세스
일반적으로 ::는 정적 멤버 액세스에 사용되지만 드물게 인스턴스 멤버에 액세스하는 데도 사용할 수 있습니다. 파생 클래스 내의 메소드.
메소드 호출 의미
의 의미 -> 연산자는 ::보다 복잡합니다. ->를 통한 전화 대상 메서드가 모두 정적으로 선언되지 않았고 호환 가능한 개체 컨텍스트가 있는 경우 인스턴스 호출이 발생합니다. 그렇지 않으면 정적 호출로 처리됩니다.
예
다음 코드 조각을 고려하세요.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!