Можете ли вы определить или изменить константу в PHP?
Можете ли вы определить или изменить константу в PHP?
Ответ 1
Нет. Константы constant.
Ответ 2
Я знаю, что это уже поздно в игре... но вот одна вещь, которая может помочь некоторым людям...
В моем файле "Application.php" (где я определяю все мои константы и включаю во все мои скрипты), я делаю что-то вроде этого:
if( !defined( "LOGGER_ENABLED" )){
define( "LOGGER_ENABLED", true );
}
Итак, каждый script собирается активировать ведение журнала... но если в ОДНОМ конкретном script я не хочу этого поведения, я могу просто сделать это ПЕРЕД тем, как я включу свой Application.php:
define( "LOGGER_ENABLED", false );
Ответ 3
Если вам абсолютно необходимо это сделать (хотя я бы не рекомендовал его, как утверждали другие), вы всегда можете использовать Runkit.
http://www.php.net/manual/en/function.runkit-constant-redefine.php
http://www.php.net/manual/en/function.runkit-constant-remove.php
Ответ 4
Нет. Как только константа определена, она никогда не может быть изменена или undefined.
Ответ 5
Другие плакаты верны - вы не можете этого сделать. Но, возможно, вы можете перенести свое определение так, чтобы вы знали, что будет лучшим значением для константы.
Возможно, вы определяете константы в большом списке:
define('STRING1','Foo');
define('STRING2', 'Bar');
define('STRING3', 'Baz');
и вы хотите изменить значение STRING2 после обнаружения условия. Один из способов - отложить определение до тех пор, пока вы не узнаете правильную настройку.
define('STRING1','Foo');
// define('STRING2', 'Bar'); -- wait until initialization
define('STRING3', 'Baz');
...
if (condition) {
define('STRING2', 'Bar type 2');
} else {
define('STRING2', 'Bar type 1');
}
Логическая установка STRING2 может быть даже в другом файле, позже в процессе обработки.
Ответ 6
Как не упоминается в другом месте, расширение uopz позволяет константу удалять через uopz_undefine(), для PHP 5.4 +.