在PHP中定义常量有什么限制吗?

在PHP中定义常量有什么限制吗?,php,constants,Php,Constants,我应该定义常数并使用它吗 或 我能用幻数吗 我在一个项目中工作,在很多地方我都在使用幻数,我想改变它吗?因为我用的是1000多个魔法数字?这是仪式方式还是我应该使用常量 常数的数量有限制吗 例: PHP中的常量没有限制-至少没有本机限制 这是一个很好的实践——如果您有1000个命名错误的常量,那么阅读您的代码的人将很难理解这一点。而且-我不明白为什么要对数字使用常量,除非它们具有模型定义(或应用程序定义)的含义 也就是说,如果你有一些id为1的服务“FOO”,那么服务FOO\u id常量值为1是

我应该定义常数并使用它吗

我能用幻数吗

我在一个项目中工作,在很多地方我都在使用幻数,我想改变它吗?因为我用的是1000多个魔法数字?这是仪式方式还是我应该使用常量

常数的数量有限制吗

例:


PHP中的常量没有限制-至少没有本机限制

这是一个很好的实践——如果您有1000个命名错误的常量,那么阅读您的代码的人将很难理解这一点。而且-我不明白为什么要对数字使用常量,除非它们具有模型定义(或应用程序定义)的含义

也就是说,如果你有一些id为1的服务“FOO”,那么
服务FOO\u id
常量值为1是正常的解决方案,但是如果你想为($I=1;…)的case
创建值为1的常量,那听起来很奇怪


当然,常见的答案是:这是观点基础。这取决于您。

您可以拥有任意数量的常数。PHP已经内置了大量常量

您可能想考虑将它们作为类常量(类中的代码> const )而不是全局常量(使用<代码>定义< /代码>)。将它们组织起来将有助于您更好地构建代码,并使事情更易于处理

此外,如果一些常数是相关的,则可以考虑使用位掩码对值组,这样您就可以一起指定它们。这将避免为组合值创建额外的常量


但所有这些只是让你的生活更轻松的建议;这与你是否能做到无关。

在你的问题背景下,“神奇数字”是什么?你能提供一个让你犹豫的代码样本吗?一个特定的数字常数在代码的中间数!1,2,3,4,5.... 这些是消息的id号..1)这是基于意见的,因此脱离主题2)如果看不到特定代码,就无法判断它们是否是消息的id号,为什么不创建一个名称到数字的查找数组,因此,您可以为消息使用有意义的名称,而不必记住id 2是无效的\u登录消息是的,谢谢。。。我只在messgaes中使用常量。。循环中没有输入:)
 Magic numbers:
    $common->getDBMessage(25);
 Constants:
    $common->getDBMessage(ERROR_MESSAGE_INVALID_PHONE);