* Scope parser::
* 1. Purpose
* 1. Call static members (outside the class)
* 2. Call class constants
* 3. Call class members (properties/methods) covered by subclasses
* 2. Scenario
* 1. Outside the class: Only access to the class through the class name is allowed Member
* 2. Inside the class: only the following are allowed: self, parent, static
* 3. Special: Class name variables are allowed to be used to reference the class name (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. Call static members of the class from outside the class
echo Demo1::HOME,'<br>'; echo Demo1::test1(); echo '<hr>'; echo Demo2::test1(); echo '<hr>';
//Pay attention to the difference between Demo1 calling test2() and Demo2 calling test2()
//Demo1::test( ) Returns the running result of test1() in Demo1
echo Demo1::test2(); echo '<hr>';
//Demo2::test2() Returns the running result of test1() in Demo2
echo Demo2::test2(); echo '<hr>';
//php5.3, allows the use of classes Variable to call
$class = 'Demo2'; echo $class::test2();
The above is the detailed content of Range parser in php. For more information, please follow other related articles on the PHP Chinese website!