是否可以使用 PHP stdClass 对象定义常量?

Is it possible to define a constant using a PHP stdClass object?

PHP.net class 常量页面对此没有提及任何内容,我也没有找到其他有答案的问题。

我很惊讶我找不到这个问题的答案,也许我看起来不够好,但是是否可以为 stdClass 对象定义一个常量,例如:

<?php
$foo = new stdClass();

#something magic here like:
const $foo->pi = 3.14;

#and then get access like:
echo $foo::pi;

如果不可能,为什么不呢?

提前致谢。

不,你不能。原因很简单。常量是在编译时创建的静态幂等值。

它们不是变量。

您的语法实际上试图将 property/variable 添加到一个对象,然后将其用作常量,这就是为什么当您尝试访问 Undefined class constant 'stdClass::pi'[= 时出现语法错误的原因11=]

如果您出于某种原因尝试这样做,除了学术之外,您可能想要创建一个新问题来解释您想要什么以及为什么。 PHP(例如匿名 classes)有一些有趣的特性,可能允许您使用某种变通方法,尽管显而易见的传统解决方案只是定义一个基础 class 并利用继承继承东西。

接口也可以定义常量,因此您可以与各种 classes 共享常量,方法是定义一个包含您想要定义的常量的接口,并让 class 实现该接口。