【问题标题】:How to retrieve a static property of the subclass in a static method in the super class如何在超类的静态方法中检索子类的静态属性
【发布时间】:2020-02-15 02:30:42
【问题描述】:

我有类似如下代码的情况:

class ParentClass
{

    public static $property = 'parentValue';

    public static function doSomethingWithProperty() {

        echo 'Method From Parent Class:' . self::$property . "\n";

    }

}

class ChildClass extends ParentClass 
{

    public static $property = 'childValue';

}


echo "Directly: " . ChildClass::$property . "\n";
ChildClass::doSomethingWithProperty();

从 cli 运行它,我得到输出:

Directly: childValue
Method From Parent Class: parentValue

有没有办法从父类中定义的静态方法中检索子类中定义的静态属性?

【问题讨论】:

标签: php oop static php-7 static-methods


【解决方案1】:

使用self 关键字总是引用同一个类。

要允许覆盖静态属性/方法,您必须使用 static 关键字。你的方法应该是这样的

public static function doSomethingWithProperty()
{
    echo 'Method From Parent Class:' . static::$property . "\n";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2014-08-18
    • 2011-10-10
    • 2013-01-20
    相关资源
    最近更新 更多