欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

对PHPstatic的理解

程序员文章站 2022-05-03 19:02:03
...
最近看了下Yii2.0的源码,发现里面有很多new static() 和static::的语句,顺便做下记录
- 首先看下面代码
classA {publicstaticfunctionget_self() {returnnewself();
    }

    publicstaticfunctionget_static() {returnnewstatic();
    }
}
classBextendsA {}
echo get_class(B::get_self()); // Aecho get_class(B::get_static()); // Becho get_class(A::get_static()); // A

通过上面可以看出new static() 表示的调用的类,而new self() 表示的是声明的类

classA {const TEST = 'testa';

    publicstaticfunctiontest_static(){echostatic::TEST;
    }

    publicstaticfunctiontest_self()
    {echoself::TEST;
    }
}
classBextendsA {const TEST = 'testb';
}
echo B::test_static(); //testbecho B::test_self(); //testa

通过上面的观察可以得出一个结论,static和被调用的类相关,而self则和声明的类(self代码所在的类)相关。

以上就介绍了对PHPstatic的理解,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。