Привет тебе, несокрушимый All!
Возникла проблема, на которой я с ходу затупил.
Предположим, есть некий абстрактный класс, у которого существует несколько конкретных классов-реализаций. Предположим также, что абстрактный класс имеет некое свойство, которое наследуется потомками. Это свойство уникально для каждого класса. Ну, например, объявляем абстрактный класс AbstractClass с неким свойством UserType, по умолчанию равным нулю (значения это не имеет, класс-то абстрактный), а дальше объявляем классы ConcreteClass1 и ConcreteClass2. У первого свойство UserType будет равно 1, а у второго - 2.
Казалось бы, проблем тут никаких нет. Можно объявить это свойство как публичную переменную. Можно - как приватную, со специально приделанным методом типа getUserType(). А можно вовсе константу, которая будет иметь своё значение для каждого класса. Это представляется наиболее логичным.
Но есть два условия, которые портят всю малину.
1) К свойству UserType надо обращаться без привязки к созданию соответствующего объекта.
То есть, UserType должен быть константой класса или, по крайней мере, статическим членом класса.
2) Заранее не известно, какая именно реализация абстрактного предка будет использоваться.
То есть, имя предназначенного для использования конкретного класса будет, к примеру, сидеть в какой-нибудь переменной.
И вот тут в PHP 5.2.x мы наступаем на развесистые грабли. Он напрочь не понимает синтаксис вида: