在PHP中使用类常量和重写

Ant*_*ing 3 php oop overriding class-constants

如果我的类结构的值可以是true或false,那么不会改变,当前实现为变量会更好地将它们更改为常量,例如:

class Parent {
    const BOOL_CONST = false;

    ...
}

class SomeChild extends Parent {
    const BOOL_CONST = true;

    ...
}
Run Code Online (Sandbox Code Playgroud)

后来我有一个对象,可以是该类层次结构中的任何类型,父项或其子项之一,并且某些子项可能像"SomeChild"一样将值重载为true.

有没有办法在不知道课程的情况下访问常量?换句话说,我可以这样做:

$object->BOOL_CONST
Run Code Online (Sandbox Code Playgroud)

或者将这些值保留为变量会更好,即使它们真的不应该改变?

UPDATE

我已经对上面的问题进行了重写,以便更好地表达我试图提出的问题.

Wil*_*III 7

有没有办法在不知道课程的情况下访问常量?换句话说,我可以这样做:

是的,为了引用常量,您将需要使用以下构造:

  • self :: NAME_OF_CONSTANT:给我一个在这个类中定义的常量; 如果我没有定义它,请从我父母那里得到它
  • static :: NAME_OF_CONSTANT:只给我一个在这个类中定义的常量; 永远不要看我的父母
  • parent :: NAME_OF_CONSTANT:仅在我的父类中给我一个常量; 永远不要为自己看

顺便说一下,你使用了"超载"一词; 但是,我相信你的意思是说"被覆盖".重载在面向对象语言中具有不同的语义含义.