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



PHP.net类常量页面没有提到这方面的任何内容,我也没有找到其他有答案的问题。

我很惊讶我找不到答案,也许我看起来不够好,但有可能为stdClass对象定义一个常量吗,比如:

<?php
$foo = new stdClass();
#something magic here like:
const $foo->pi = 3.14;
#and then get access like:
echo $foo::pi;

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

提前谢谢。

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

它们不是变量。

您的语法实际上试图将属性/变量添加到对象中,然后将其用作常量,这就是为什么当您尝试访问Undefined class constant 'stdClass::pi'时会出现语法错误

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

接口也可以定义常量,因此您可以通过定义具有要定义的常量的接口来与各种类共享常量,并让类实现该接口。

相关内容

最新更新