Можно ли переопределить PHP-константы?

Можно ли переопределить константы класса (в PHP)?

например.

class B {
const C_ThisIsAConstant = 1;
}

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

Ответы

Ответ 1

Нет, конечно нет. Тогда они не будут "константами".

Ответ 2

Вы не можете переопределить "константы", потому что они ограничены.

Если вы пытаетесь изменить константу, определенную во включенном файле, вы можете определить константу перед включением:

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

PROCESS_NAME будет "MIKE".

Ответ 3

Сначала: Нет, переопределить константы класса невозможно. Его невозможно на каждом языке, потому что иначе константа не будет постоянной.

Но то, что вы делаете, возможно, потому что вы не переопределяете константу класса, вместо этого вы определяете одну уникальную константу для каждого класса.

Ответ 4

<?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