子类是否继承父常量,如果是,如何访问它们?

2022-08-30 19:05:56

问题真的说明了一切。

我在父类中定义了常量。我试过了,但它不起作用。$this->CONSTANT_1

class MyParentClass{

    const CONSTANT_1=1
}

class MyChildClass extends MyParentClass{

 //want to access CONSTANT_1  

}

答案 1

我认为您需要像这样访问它:

self::CONSTANT_1;

或者“parent”,它将始终是在父类中建立的值(即,常量的不变性保持不变):

parent::CONSTANT_1;

有趣

需要注意的一件有趣的事情是,您实际上可以覆盖子类中的const值。

class MyParentClass{

    const CONSTANT_1=1;
}

class MyChildClass extends MyParentClass{

    const CONSTANT_1=2;
}

echo MyParentClass::CONSTANT_1; // outputs 1
echo MyChildClass::CONSTANT_1; // outputs 2

答案 2

您还可以使用静态键访问父方法中的子项中的常量定义。

<?php

class Foo {

    public function bar() {

        var_dump(static::A);
    }
}

class Baz extends Foo {

    const A = 'FooBarBaz';

    public function __construct() {

        $this->bar();
    }
}

new Baz;

推荐