是否有可能重新定义PHP常量?

时间:2011-03-25 01:47:45

标签: php class constants

是否可以重新定义类常量(在PHP中)?

e.g。

class B {
const C_ThisIsAConstant = 1;
}

class A extends B {
 self::C_ThisIsAConstant = 2;
}

5 个答案:

答案 0 :(得分:19)

不,当然不是。那么他们就不会是“常数”。

答案 1 :(得分:3)

你不能重新定义“常数”,因为它们是持久的。

如果您尝试更改包含文件中定义的常量,则可以在包含之前定义常量:

define ("PROCESS_NAME", "MIKE");
/* ... code ... */
include ("/path/to/included_file.php"); // also defines "PROCESS_NAME"
/* ... code ... */

PROCESS_NAME将成为“MIKE”。

答案 2 :(得分:2)

第一:不,不可能重新定义类常量。 每种语言都不可能,因为否则常数不会是常数。

但你正在做的事情是可能的,因为你不重新定义一个类常量,而是为每个类定义一个唯一的常量。

答案 3 :(得分:1)

<?php

class B {
    const C_ThisIsAConstant = 1;
}

class A extends B {
    const C_ThisIsAConstant = 2;
}

var_dump(A::C_ThisIsAConstant);

输出int(2)

http://codepad.org/GQR9HI5M

答案 4 :(得分:0)

我在github.com上发布了我的框架YAPAF。我们称之为alpha-state。无论如何,YAPAF能够改变类常量的值(见https://github.com/SchulteMarkus/YAPAF/blob/master/tests/ManipulateConstantTest.php)。