如果我声明一个基类如下:
abstract class Parent {
protected static $message = "UNTOUCHED";
public static function yeah() {
static::$message = "YEAH";
}
public static function nope() {
static::$message = "NOPE";
}
public static function lateStaticDebug() {
return(static::$message);
}
}
然后扩展它:
class Child extends Parent {
}
然后这样做:
Parent::yeah();
Parent::lateStaticDebug(); // "YEAH"
Child::nope();
Child::lateStaticDebug(); // "NOPE"
Parent::yeah();
Child::lateStaticDebug() // "YEAH"
有没有办法让继承自第一个类的第二个类也继承属性而不仅仅是方法?
我只是想知道 PHP 的后期静态绑定(bind)和继承是否允许这样做。我已经在想方设法解决这个问题了……但是,一个未声明的静态属性会返回到其父级以获得一个值似乎没有意义!?
最佳答案
继承和 static
属性有时会导致 PHP 出现“奇怪”的事情。
你应该看看Late Static Bindings在 PHP 手册中:它解释了在 PHP <= 5.2 中继承和使用 static
属性时会发生什么;并为 PHP >= 5.3 提供解决方案,您可以在其中使用 static::
关键字而不是 self::
,以便在执行时完成静态绑定(bind)(而不是编译) 时间。
关于php - 有没有办法让 PHP 子类继承属性(静态和实例)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1203810/