开发者

Is it possible to redefine PHP constants?

开发者 https://www.devze.com 2023-02-19 09:47 出处:网络
Is it possible to redefine class constants (in PHP)? e.g. class B { const C_ThisIsAConstant = 1; } class A extends B {

Is it possible to redefine class constants (in PHP)?

e.g.

class B {
const C_ThisIsAConstant = 1;
}

class A extends B {
 self::C_开发者_如何学PythonThisIsAConstant = 2;
}


No, of course not. Then they wouldn't be "constants."


You can't redefine "constants" because they are contant.

If you're trying to change a constant defined in an included file, then you can defining the constant before the include:

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

PROCESS_NAME will be "MIKE".


First: No, it is not possible to redefine class constants. Its impossible in every language, because otherwise a constant wouldnt be constant.

But what you are doing is possible, because you dont redefine a class constant, instead you define a one unique constant for every class.


<?php

class B {
    const C_ThisIsAConstant = 1;
}

class A extends B {
    const C_ThisIsAConstant = 2;
}

var_dump(A::C_ThisIsAConstant);

It outputs int(2).

http://codepad.org/GQR9HI5M


I have published my framework YAPAF on github.com. Let's call it alpha-state. Anyhow, YAPAF is able to change the value of a class constant (see https://github.com/SchulteMarkus/YAPAF/blob/master/tests/ManipulateConstantTest.php).

0

精彩评论

暂无评论...
验证码 换一张
取 消