Ответ 1
Нет, конечно нет. Тогда они не будут "константами".
Можно ли переопределить константы класса (в PHP)?
например.
class B {
const C_ThisIsAConstant = 1;
}
class A extends B {
self::C_ThisIsAConstant = 2;
}
Нет, конечно нет. Тогда они не будут "константами".
Вы не можете переопределить "константы", потому что они ограничены.
Если вы пытаетесь изменить константу, определенную во включенном файле, вы можете определить константу перед включением:
define ("PROCESS_NAME", "MIKE");
/* ... code ... */
include ("/path/to/included_file.php"); // also defines "PROCESS_NAME"
/* ... code ... */
PROCESS_NAME будет "MIKE".
Сначала: Нет, переопределить константы класса невозможно. Его невозможно на каждом языке, потому что иначе константа не будет постоянной.
Но то, что вы делаете, возможно, потому что вы не переопределяете константу класса, вместо этого вы определяете одну уникальную константу для каждого класса.
<?php
class B {
const C_ThisIsAConstant = 1;
}
class A extends B {
const C_ThisIsAConstant = 2;
}
var_dump(A::C_ThisIsAConstant);
Он выводит int(2)
.
Я опубликовал свою фреймворк YAPAF на github.com. Пусть называется альфа-состояние. В любом случае YAPAF может изменить значение константы класса (см. https://github.com/SchulteMarkus/YAPAF/blob/master/tests/ManipulateConstantTest.php).