是否可以重新定义类常量(在PHP中)?
e.g。
class B {
const C_ThisIsAConstant = 1;
}
class A extends B {
self::C_ThisIsAConstant = 2;
}
答案 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)
。
答案 4 :(得分:0)
我在github.com上发布了我的框架YAPAF。我们称之为alpha-state。无论如何,YAPAF能够改变类常量的值(见https://github.com/SchulteMarkus/YAPAF/blob/master/tests/ManipulateConstantTest.php)。