찾다

 >  Q&A  >  본문

PHP가 ::를 통해 클래스의 비정적 메서드를 직접 호출할 수 있는 이유는 무엇입니까?

코드는 다음과 같습니다.

으아악

php7.0 실행 출력:

으아악

php5.6 실행 출력

으아악

이런 조작도 있군요??

滿天的星座滿天的星座2731일 전548

모든 응답(7)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-06-10 09:49:28

    http://www.laruence.com/2012/...

    하하하, 답변해 주신 모든 분들께 감사드립니다. 구체적인 이유는 위의 Brother Bird 글을 읽어보세요

    회신하다
    0
  • 高洛峰

    高洛峰2017-06-10 09:49:28

    버전 5.6 이하의 클래스가 인스턴스화 없이 메서드와 속성을 직접 호출하는 경우 메서드와 속성은 정적 메서드여야 합니다. 즉, Demo 클래스가 테스트 메서드를 직접 호출하려는 경우 테스트는 public static function test() { }. 그렇지 않으면 오류가 보고됩니다.
    7.0 이상에서는 선언할 필요가 없는지 모르겠습니다

    회신하다
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-10 09:49:28

    봤지만 php-cli는 실행이 되는데 php-fpm은 여전히 ​​실행이 안되네요

    으아악

    회신하다
    0
  • 某草草

    某草草2017-06-10 09:49:28

    사용할 수는 있지만 권장하지는 않습니다.

    회신하다
    0
  • 習慣沉默

    習慣沉默2017-06-10 09:49:28

    php7.0은 이렇게 작성할 수 있지만 php5.6은 self::testing

    으로 작성할 수도 있습니다.

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-06-10 09:49:28

    __callStatic()

    회신하다
    0
  • 学习ing

    学习ing2017-06-10 09:49:28

    PHP 구현이 엄격하지 않다고 볼 수 있습니다.

    비정적 메소드에서 $this가 사용되지 않는 경우::를 사용하여 호출할 수 있습니다.

    회신하다
    0
  • 취소회신하다