Можно ли переопределить константы PHP? - PullRequest
12 голосов
/ 25 марта 2011

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

например

class B {
const C_ThisIsAConstant = 1;
}

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

Ответы [ 5 ]

19 голосов
/ 25 марта 2011

Нет, конечно нет.Тогда они не будут «постоянными».

3 голосов
/ 10 сентября 2012

Вы не можете переопределить «константы», потому что они являются константами.

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

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

PROCESS_NAME будет "MIKE".

2 голосов
/ 25 марта 2011

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

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

1 голос
/ 19 июля 2012
<?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

0 голосов
/ 13 января 2014

Я опубликовал свой фреймворк YAPAF на github.com.Давайте назовем это альфа-состоянием.В любом случае, YAPAF может изменять значение константы класса (см. https://github.com/SchulteMarkus/YAPAF/blob/master/tests/ManipulateConstantTest.php).

...