>  기사  >  백엔드 개발  >  PHP의 범위 파서

PHP의 범위 파서

无忌哥哥
无忌哥哥원래의
2018-06-28 15:03:561527검색

* 범위 파서::

* 1. 목적

* 1. 정적 멤버 호출(클래스 외부)

* 2. 클래스 상수 호출

* 3. 하위 클래스에 포함되는 클래스 멤버(속성/메서드) 호출

* 2. 시나리오

* 1. 클래스 외부: 클래스 이름으로만 클래스에 속한 멤버에 접근 가능

* 2. 클래스 내부: self, parent, static

만 허용됩니다. 3. 특수: 클래스 이름 참조에 클래스 이름 변수 사용 허용(php5.3+)

class Demo1 
{
    const HOME = '合肥';
    public static function test1()
    {
        return __METHOD__;
    }
    public static function test2()
    {
        //延迟静态绑定:后面会说到
        //static::根据上下文来决定使用哪个类来调用
        return static::test1();
    }
}
class Demo2 extends Demo1
{
    public static $name = '朱老师';
    public static function test1()
    {
        //调用本类静态成员: self::
        $res = self::$name.&#39;<br>&#39;;
        //调用父类静态成员属性: parent::
        $res .= parent::HOME.&#39;<br>&#39;;
        //调用父类静态成员方法
        $res .= parent::test1().&#39;<br>&#39;;
        $res .= __METHOD__;
        return $res;
    }
    
}

//1. 클래스 외부에서 클래스 정적 멤버 호출

echo Demo1::HOME,&#39;<br>&#39;;
echo Demo1::test1();
echo &#39;<hr>&#39;;
echo Demo2::test1();
echo &#39;<hr>&#39;;

//Demo1이 test2()를 호출하는 것과 Demo2의 차이점에 유의하세요. test2()

// Demo1::test()를 호출하면 Demo1

echo Demo1::test2();
echo &#39;<hr>&#39;;

에서 test1()의 실행 결과가 반환됩니다.//Demo2::test2()는 Demo2

echo Demo2::test2();
echo &#39;<hr>&#39;;

에서 test1()의 실행 결과가 반환됩니다.// php5.3+, 클래스 변수 사용 허용

$class = &#39;Demo2&#39;;
echo $class::test2();
호출

위 내용은 PHP의 범위 파서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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