手记

PHP static 和 self 的区别

self :: 在哪个类里调用的就调用哪个类中的方法,不受重写的影响。
static :: 调用的方法如果被子类重写,那调用的就是子类中的方法。

//父类
class father
{
    public static function name()
    {
        echo "xiaosan";
        echo "<br />";
    }
    
    public static function callself()
    {
        self::name();   //调用name方法
    }
    
    public static function callstatic()
    {
        static::name(); //静态绑定
    }
}

//继承类
class son extends father
{
    //重写name方法
    public static function name()
    {
        echo "gaojin";
        echo "<br />";
    }
}

son::callself();    // xiaosan
son::callstatic();  // gaojin
2人推荐
随时随地看视频
慕课网APP