>백엔드 개발 >PHP 튜토리얼 >PHP의 이중 콜론 구문을 사용하여 비정적 메서드 호출이 실패하는 이유는 무엇입니까?

PHP의 이중 콜론 구문을 사용하여 비정적 메서드 호출이 실패하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-21 09:53:10466검색

Why Do Calls to Non-Static Methods Using PHP's Double Colon Syntax Fail?

이중 콜론 구문을 사용하여 비정적 메서드 호출

PHP에서는 정적 메서드 구문을 사용하여 비정적 메서드를 호출하는 것이 가능합니다. , 클래스::메서드. 그런데 이러한 호출이 실패하는 이유는 무엇입니까?

다음 예를 고려하십시오.

class Teste {
    public function fun1() {
        echo 'fun1';
    }
    public static function fun2() {
        echo "static fun2";
    }
}

Teste::fun2() 호출은 정적 메소드이므로 작동하지만 Teste::fun1 호출은 작동합니다. ()는 오류를 발생시킵니다.

이 설명은 PHP가 정적 메서드와 비정적 메서드를 느슨하게 처리하는 데 있습니다. 비정적 메서드가 C 클래스의 비정적 메서드 내에서 정적으로 호출되는 경우 비정적 메서드 ns 내의 $this는 C의 인스턴스를 참조합니다.

예:

class A {
    public function test() {
        echo $this->name;
    }
}

class C {
    public function q() {
        $this->name = 'hello';
        A::test();
    }
}

$c = new C;
$c->q(); // prints hello

예기치 않은 동작이 발생할 수 있지만 엄격한 오류 보고를 활성화하지 않으면 오류가 아닙니다. 따라서 이중 콜론 구문을 사용하여 정적으로 비정적 메서드를 호출하는 것은 오류나 혼란스러운 동작으로 이어질 수 있으므로 권장되지 않습니다.

위 내용은 PHP의 이중 콜론 구문을 사용하여 비정적 메서드 호출이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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