【问题标题】:PHP - assign value of function to class constantPHP - 将函数的值分配给类常量
【发布时间】:2011-07-28 10:27:49
【问题描述】:

在 PHP 中定义类级常量时:

const MY_CONSTANT = 'hello constant';

为什么不能用诸如

之类的函数初始化这个值
const MY_FILEPATH = dirname(dirname(__FILE__)) . '/heres-my-file.php';

【问题讨论】:

标签: php


【解决方案1】:

简而言之:常量在解析时被替换,但函数在解释时被执行。解析器根本不知道它应该将内容的值设置为什么。

【讨论】:

  • 嗨,谢谢。好吧,那是有道理的。做这种事情的最佳实践是什么,因为它必须经常发生 - 需要一个常量值,但它是从函数调用或其他东西定义的。
【解决方案2】:

常量是不可变的。因此,如果函数可以改变常量的值,它就不是常量了。

【讨论】:

  • 是的,但我并没有尝试更改常量的值,而是尝试使用函数的值对其进行初始化。
  • 我明白你的意思。但是,如果函数可以初始化一个常数,理论上它可以改变它的值。因为常量必须在类中初始化(如果它也在类中声明)。
  • "如果函数可以初始化一个常数,理论上它可以改变它的值"。这对我来说没有多大意义。如果一个常量被初始化,它就是一个常量。如果未初始化,则不存在。永远不会改变。
  • 对不起,我的意思是“如果函数可以(设置)一个常数值..”。因为常量的值必须在声明时设置,并且只能设置一次。
  • 您的回答没有帮助。对于只计算一次的final 变量,Java 中允许使用此模式。显然它在 PHP 中是不允许的。但原因与改变常量值的函数无关;没有内在的原因不能从函数的值中分配一次变量。如果程序员在这种情况下使用一个函数,该函数不会为具有相同参数的函数调用返回相同的结果……那么,对于程序员来说,这是一个糟糕的选择,用于定义constant。否则,为什么不呢?
猜你喜欢
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 2015-02-24
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多