【问题标题】:Can't use string concatenation in constants?不能在常量中使用字符串连接?
【发布时间】:2012-08-10 13:35:41
【问题描述】:
const
   SOME_PATH = __DIR__ . '/blabla.bla';

不起作用我得到一个解析错误:

期待','' or';''

wtf!?

【问题讨论】:

  • 但我希望它是类常量:(
  • 不可能,因为这在执行运行时没有被解析
  • 你没有提到这是在课堂上。
  • 我认为您遇到了与此处相同的问题。 stackoverflow.com/questions/2236018/…
  • @DanLee 我没想到。我需要咖啡。

标签: php constants


【解决方案1】:

您只能在声明类常量或属性时使用常量值。没有变量表达式。

【讨论】:

  • OP 没有使用变量表达式。 OP 正在使用常量和文字的连接。问题在于串联
  • 试图找到“恒定值”的反义词,这显然很难正确。 :)
【解决方案2】:

问题不在于常量,而在于您使用非文字将类变量定义为字符串。

const SOME_PATH = __DIR__;

没问题,但是一旦你开始使用连接,解析器就会大吃一惊。

这与它起作用的原因相同:

class myClass {
    public $something = "something";
}

但这不是:

class myClass {
    public $something = "some" . "thing";
}

【讨论】:

  • @decereé 你是对的,但我认为这是允许的。虽然不是 100% 确定。
  • 是的,因为它是一个常数值。这就是标准。
  • @decereé 很好的说明。就像我说的,我很讨厌“教科书”的定义。我更擅长概念化而不是定义。
猜你喜欢
  • 2011-01-13
  • 1970-01-01
  • 2023-03-08
  • 2014-09-11
  • 2023-04-06
  • 1970-01-01
  • 2017-07-27
  • 2012-03-19
相关资源
最近更新 更多