Могу ли я определить константу класса внутри функции конструктора классов?
(на основе определенных условий)
Это противоречит идее классовых констант – они не должны зависеть от конкретного экземпляра. Вместо этого вы должны использовать переменную.
Однако, если вы настаиваете на этом, очень предприимчивы и можете устанавливать расширения PHP, вы можете взглянуть на расширение runkit, которое позволяет изменять классы и их константы во время выполнения. См. Этот документ: http://www.php.net/manual/en/function.runkit-constant-add.php
Я не думаю, что ты можешь.
Это тоже не имеет смысла – константа класса может использоваться в статическом контексте, где в первую очередь нет конструктора.
Вместо этого вам придется использовать переменную – для этого они и есть.
Попробуйте посмотреть здесь:
http://php.net/manual/en/language.oop5.constants.php
http://php.net/manual/en/language.oop5.static.php
Надеюсь это поможет.