비정적 메서드에서 정적 속성을 호출할 수 있습니다.
God_Like
God_Like 2019-04-14 19:20:19
0
3
2220

이 레슨의 3:30에서 언급한 것처럼 비정적 메서드에서는 정적 속성을 호출할 수 없습니다.

그러나 개인 테스트에 따르면 이 클래스의 비정적 메서드는 정적 속성을 호출할 수 있습니다.

정적 속성의 [self]를 사용하세요. : :속성 이름】 그냥

God_Like
God_Like

모든 응답(2)
God_Like

먼저 선생님의 답변 정말 감사합니다

1. 주신 샘플 코드의 클래스는 test() 메서드를 정의하지 않아 인스턴스화가 오류와 함께 실행됩니다

echo(새 데모) ->test(); // "오류"

둘째, php7.2버전으로 연습했어요

주신 코드에서 (new Demo)->test()를 바꿨어요 to (new Demo)->test2() Running

두 출력 결과 모두 peter

클래스의 [일반적인 메서드]가 [클래스의 정적 속성]과 [정적 속성]을 모두 호출할 수 있음을 증명합니까? 방법] 수업

Peter-Zhu

우선, 학습에 대한 진지한 태도에 감사드립니다. 맞습니다. 튜토리얼에는 약간의 허술함이 있습니다...

사실 일반적인 방법에서는 정적 속성을 직접 호출하면 오류가 보고되지 않습니다. 정적 메서드 호출은 절대 허용되지 않습니다.

일반적인 메서드에서는 공식적으로 정적 멤버를 사용하지 않는 것이 좋습니다. 여기서는 정적 속성을 사용할 수 있습니다. 이는 향후 버전에서 수정될 수 있습니다.

다음은 참고용 테스트 코드입니다.

class Demo
{
    // 静态属性
    public static $name = 'peter';
    
    // 静态方法
    public static function hello()
    {
       return self::$name;
    }
    
    //  普通方法1
    public function test1()
    {
        return self::$name;
    }
    
    //  普通方法1
    public function test2()
    {
        return self::hello();
    }
}

echo (new Demo)->test1();    // "peter"
echo '<hr>';
echo (new Demo)->test();    // "Error"


최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿