Можете ли вы определить или изменить константу в PHP?
Нет. Константы постоянны .
Ссылка: php.net/manual/language.constants.php
Я знаю, что это уже поздно в игре … но вот одна вещь, которая может помочь некоторым людям …
В моем файле «Application.php» (где я определяю все мои константы и включаю во все мои скрипты) я делаю что-то вроде этого:
if( !defined( "LOGGER_ENABLED" )){ define( "LOGGER_ENABLED", true ); }
Поэтому, как правило, каждый скрипт будет активировать ведение журнала … но если в ОДНОМ конкретном сценарии я не хочу этого поведения, я могу просто сделать это ПЕРЕД тем, как я включу свой Application.php:
define( "LOGGER_ENABLED", false );
Если вам абсолютно необходимо это сделать (хотя я бы не рекомендовал его, как утверждали другие), вы всегда можете использовать Runkit.
http://www.php.net/manual/en/function.runkit-constant-redefine.php
http://www.php.net/manual/en/function.runkit-constant-remove.php
Нет. После определения константы она никогда не может быть изменена или не определена.
Другие плакаты верны – вы не можете этого сделать. Но, возможно, вы можете переместить свое определение до такой степени, что вы знаете, что будет лучшим значением для константы.
Возможно, вы определяете константы в большом списке:
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 может быть даже в другом файле, позже в вашей обработке.
Как не упоминается в другом месте, расширение uopz позволяет константу удаляться через uopz_undefine () для PHP 5.4+.