다음은 사용자가 묻는 문장의 의미를 보여주는 예입니다.
하나의 방법으로 다음 클래스를 생각해보십시오 (정적이 아닙니다).
class Test
{
function method()
{
echo "Hello from method";
}
}
Test::method(); // attempt to statically call a non-static method
이
출력이다
엄격한 기준 : 비 정적 법 시험 방법 :() 헬로
라인 (12) 상에 정적이라고 /obj.php 안된다 당신이 볼 수 있듯이 정적 심지어 네가 전화했을 때 방법
에서, 그것은 는 방법을 실행했다 정적 인 방법은 아니지만 엄격한 오류 메시지가 표시됩니다.
메서드 method()
이 $this
키워드를 참조하면 $this
이 정적 메서드 호출의 컨텍스트에 존재하지 않으므로 치명적인 오류가 발생합니다. 정적이 아닌 클래스 메서드를 정적으로 호출하는 것은 기술적으로 가능하지만 그렇게해서는 안됩니다.
편집 :
정적 클래스를 설계했다, 그래서 만약 static 키워드는 클래스 메소드의 맥락에서 PHP4에 존재하지 않았기 때문에 당신도 정적 비 정적 클래스 멤버 호출을 허용하는 이유는 나 메소드를 PHP4에서 보여줄 때, 그것을 나타 내기위한 키워드가 없었기 때문에 단순히 정적 인 방식으로 호출 할 것입니다. 메소드가 정적으로 호출되었지만 선언에 static 키워드가없는 경우 PHP5가 경고를 내 보냅니다.
초기화하지 않고 비 정적 메서드를 호출하면 나는 E_STRICT 경고를 준다는 것을 알려줍니다. 정확히 이해가 안되니? Static은 클래스를 객체로 초기화하지 않고 메서드를 호출 할 수 있음을 의미합니다. –
OOP 및 정적 호출에 대해 알아야 할 가장 중요한 사항은 혼합되지 않는다는 것입니다. 정적 호출은 절차 적 프로그래밍 사고 방식의 일부입니다. –
답장을 보내 주셔서 감사합니다. – Blanktext