php - 有没有办法让 PHP 子类继承属性(静态和实例)?

标签 php inheritance late-static-binding

如果我声明一个基类如下:

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/

相关文章:

PHP 后期静态绑定(bind)引用调用类

PHP:为什么 LDAP 过滤器不适用于 "_"符号?

php - 一页中的三个 HTML 标记

php - MySQL:如何检查是否列出了用户

c# - 在构造函数中初始化一个虚拟属性是错误的吗?

php - 通过引用分配静态属性在 PHP5 和 PHP7 之间表现不同

php - 如何在 php 7.1 中指示返回类型是当前子类型?

php - 从 Wordpress 获取产品重量

c++ - 为什么允许在派生类中调用 protected 静态方法?

c++ - 模板可以用来检测继承关系吗