gpt4 book ai didi

php - 在 PHP 中使用类常量和覆盖

转载 作者:可可西里 更新时间:2023-11-01 00:00:56 25 4
gpt4 key购买 nike

如果我有一个类结构,其值可以为 true 或 false,它不会改变,当前实现为变量,最好将它们更改为常量,例如:

class Parent {
const BOOL_CONST = false;

...
}

class SomeChild extends Parent {
const BOOL_CONST = true;

...
}

后来我有一个对象,它可以是该类层次结构中的任何类型,可以是父类或其子类之一,并且某些子类可能(例如“SomeChild”)已将值重载为 true。

有什么方法可以在不知道类的情况下访问常量吗?换句话说,我可以做类似的事情吗:

$object->BOOL_CONST

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

更新

我在上面改写了我的问题,以更好地表达我想问的问题。

最佳答案

Is there some way I can access the constant without knowing the class? In other words can I do something like:

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

  • self::NAME_OF_CONSTANT:给我一个在这个类中定义的常量;如果我没有定义它,从我的 parent 那里得到它
  • static::NAME_OF_CONSTANT:仅给我一个在此类中定义的常量;永远不要向我的 parent 求助
  • parent::NAME_OF_CONSTANT:仅给我父类中定义的常量;永远不要指望自己

顺便说一句,您使用了术语“重载”;但是,我相信您的意思是说“被覆盖”。重载在面向对象语言中具有不同的语义。

关于php - 在 PHP 中使用类常量和覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9945642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com