이중 콜론 구문을 사용하여 비정적 메서드 호출
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!