【发布时间】:2020-10-05 17:24:24
【问题描述】:
PHP.net 类常量页面没有提到任何关于此的内容,我也没有找到其他有答案的问题。
我很惊讶我找不到这个问题的答案,也许我看起来不够好,但是是否可以为 stdClass 对象定义一个常量,例如:
<?php
$foo = new stdClass();
#something magic here like:
const $foo->pi = 3.14;
#and then get access like:
echo $foo::pi;
如果不可能,为什么不呢?
提前致谢。
【问题讨论】:
-
为什么不创建一个带有常量变量的类呢?通常它们应该是静态的,因为对象定义了具有可变属性的类的状态,而常量更多地基于类。
-
我不知道您可以将常量变量分配给 stdClass 实例,我希望它起作用的唯一原因是我使用 stdClass 而不是数组对变量进行分组,并且有时能够使用常量有用。真的我只是想知道这是否可能,但似乎无法做到。
-
了解这种“分组”的含义以及您为什么不只使用普通类,或者正如我在回答中建议的那样,使用匿名类可能会很有趣。实现接口的匿名类可能是您的解决方法,但我也想知道为什么不使用您预先设计的类。
-
我会说我不是 PHP 方面的专家,直到现在我还没有遇到过匿名类,我可能一直在错误地使用 stdClass,我可能应该研究其他方法来创建我需要的对象。从@gview 下面的答案中回答您的问题,这更像是一个学术问题而不是其他问题,尽管了解将 stdClass 用于我将要做的事情的局限性是有帮助的。
-
完全公平的问题。如果您来自 javascript,那么 PHP 更像是一种传统的 OOP 语言(不是基于原型的),尽管它允许您动态向对象添加属性,这可能会让人认为它更像 javascript。跨度>