知优码

您现在的位置是:首页 > WEB相关 > php

php

如何合理使用php7范围解析操作符

2019-12-25php
如何合理使用php范围解析操作符
范围解析操作符:可调用普通方法、静态方法、静态属性、常量。 可通过 对象、类 来使用,即可通过对象和类 ::操作符调用 普通方法、静态方法、静态属性、常量。

$this代表当前对象,只能用于对象作用域中。

::范围解析操作符中$this不可用。

::和$this的区别就是:作用域不同,前者是类,后者是对象。 当在对象作用域时,两者可以结合使用。

 

class Base{
    const mynum=1111;//基类常量
    public static $num=11;//基类静态成员变量
    public $name='base zhangsan';//基类普通成员变量
    
    public function hi(){//普通成员函数
        echo 'base普通方法-调用自己的常量'.self::mynum.';//1111
        echo 'base普通方法-调用自己的静态成员变量'.self::$num.';//11
        
        //::范围解析操作符中不可用
        //echo '-----base调用对象属性----';
        //echo $this->name;//child  lisi
    }
}

class MyController extends Base{
    const mynum=2222;//子类常量
    public static $num=22;//子类静态成员变量
    public $name='child  lisi';//子类普通成员变量
    
    public function hi(){//普通成员函数
        echo 'child普通方法-调用子类常量'.self::mynum.';//2222
        echo 'child普通方法-调用基类常量'.parent::mynum.';//1111
        echo 'child普通方法-调用子类静态成员变量'.self::$num.';//22
        echo 'child普通方法-调用基类静态成员变量'.parent::$num.';//11
       
        echo '---parent调用父类普通函数---';
        parent::hi();
        
        //::范围解析操作符中不可用
        //echo '-----child调用对象属性-----';
        //echo $this->name;//child  lisi
    }
 
}
$mc = new MyController();       
echo '通过 对象:: 调用普通函数';
$mc::hi();

echo '通过 类:: 调用普通函数';
MyController::hi();

echo '通过 对象-> 调用普通函数';
$mc->hi();

echo '通过 对象::调用常量、静态成员变量';
echo $mc::mynum.'<br/>';  //2222
echo $mc::$num.'<br/>';  //22

echo '通过 类::调用常量、静态成员变量';
echo MyController::mynum.'<br/>'; //2222
echo MyController::$num.'<br/>'; //22
 

输出结果: