摘要
有些时候,我们在定义类的时候有某些特殊需求,举个例子:
父类访问子类的静态变量或常量如何做,对于这个问题,一开始确实让人有点转不过弯来。具体看代码演示:
有些时候,我们在定义类的时候有某些特殊需求,举个例子:
父类访问子类的静态变量或常量如何做,对于这个问题,一开始确实让人有点转不过弯来。具体看代码演示:
- class Person {
- function getVal() {
- // 此处如何echo $name?
- }
- }
- class S1 extends Person {
- static $name = 's1';
- }
- class S2 extends Person {
- static $name = 's2';
- }
- $s1 = new S1;
- $s1->getVal();
- $s2 = new S2;
- $s2->getVal();
针对这样的问题,有人可能想到的是通过类名去实现,如果明确知道哪个类名还是可以的,但是如果不确定类名此时就显得有些捉襟见肘了。这时后期静态绑定便能很好的解决问题,代码如下:
- class Person {
- function getVal() {
- // static代表调用的类
- echo static::$name;
- }
- }
- class S1 extends Person {
- static $name = 's1';
- }
- class S2 extends Person {
- static $name = 's2';
- }
- $s1 = new S1;
- $s1->getVal();
- $s2 = new S2;
- $s2->getVal();