* 범위 파서::
* 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.'<br>'; //调用父类静态成员属性: parent:: $res .= parent::HOME.'<br>'; //调用父类静态成员方法 $res .= parent::test1().'<br>'; $res .= __METHOD__; return $res; } }
//1. 클래스 외부에서 클래스 정적 멤버 호출
echo Demo1::HOME,'<br>'; echo Demo1::test1(); echo '<hr>'; echo Demo2::test1(); echo '<hr>';
//Demo1이 test2()를 호출하는 것과 Demo2의 차이점에 유의하세요. test2()
// Demo1::test()를 호출하면 Demo1
echo Demo1::test2(); echo '<hr>';
에서 test1()의 실행 결과가 반환됩니다.//Demo2::test2()는 Demo2
echo Demo2::test2(); echo '<hr>';
에서 test1()의 실행 결과가 반환됩니다.// php5.3+, 클래스 변수 사용 허용
$class = 'Demo2'; echo $class::test2();
위 내용은 PHP의 범위 파서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!