Нет ошибки, но есть уведомление.
Примечание: постоянное РАЗВИТИЕ уже определено
Вот почему важно никогда не выключать уведомление.
error_reporting(E_ALL); // E_ALL reports all problems including notices, warnings and deprecations
Конечно, поскольку она является константой, второй define
становится неисполнимым фрагментом кода, поскольку вы не можете переопределить константу, значение остается таким, как оно было первоначально определено.
define("DEVELOPMENT", true);
define("DEVELOPMENT", false);
var_dump(DEVELOPMENT); // prints out bool(true)
Попробуйте онлайн: https://3v4l.org/7i8XL
Это может не быть большой проблемой, если у вас небольшой персональный проект, но поскольку константы всегда находятся в глобальном пространстве имен, в большом проекте с множеством внешних зависимостей некоторые константы могут конфликтовать друг с другом. Если у вас включены уведомления PHP, вы можете увидеть эту проблему быстрее. Другой вариант - всегда создавать правильно именованные константы, имена которых вряд ли будут конфликтовать с другими константами.
define("MY_COOL_LIBRARY_DEVELOPMENT", false);