>백엔드 개발 >PHP 튜토리얼 >PHP에서 메소드 액세스에 `::`와 `->`를 언제 사용해야 합니까?

PHP에서 메소드 액세스에 `::`와 `->`를 언제 사용해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-05 01:21:09448검색

PHP의 메소드 액세스에 대한

When to Use `::` vs. `->`?
` 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.