「php化整为零系列」六、后期静态绑定


源码地址:https://github.com/wilfordw/phpTutorial

该系列我只写我的理解,非官方解释,如不够专业请见谅

后期静态绑定说白了就是对于静态方法,在继承过程中引入static关键字替代self来达到静态方法的继承目的。如下代码

<?php
class A
{
    static public function callFuncXXOO()
    {
        print self::funcXXOO();
    }

    static public function funcXXOO()
    {
        return "A::funcXXOO()";
    }
}

class B extends A
{
    static public function funcXXOO()
    {
        return "B::funcXXOO";
    }
}

$b = new B;
$b->callFuncXXOO();//A::funcXXOO()

class C
{
    static public function callFuncXXOO()
    {
        print self::funcXXOO();
    }

    static public function funcXXOO()
    {
        return "C::funcXXOO()";
    }
}

class D extends C
{
    static public function funcXXOO()
    {
        return "D::funcXXOO";
    }
}

$d = new D;
$d->callFuncXXOO();//C::funcXXOO()

static实现引用子静态方法覆盖父静态方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容