Мне нужна унаследованная статическая функция "call" для вызова другой статической функции "inner", которая была переопределена. Я мог бы сделать это с поздней статической привязкой, но мой хост еще не имеет php5.3, и поэтому мне нужно обойти его.
class ClassA{
static function call()
{
return self::inner();
}
static function inner(){
return "Class A";
}
}
class ClassB extends ClassA{
static function inner(){
return "Class B";
}
}
echo "<p>Class A = " . ClassA::call();
echo "<p>Class B = " . ClassB::call();
Я хочу, чтобы результат был следующим:
Класс A = класс A
Класс B = Класс B
Но что это такое:
Класс A = класс A
Класс B = класс A
Моя кишка говорит мне, что я должен иметь возможность написать что-то в call(), чтобы определить, на какой объект ссылались, когда был вызван вызов(). Таким образом, вместо self:: inner() это было бы что-то вроде строк classclass:: inner(). Обнаружение правильной версии inner() для вызова из исходного вызова метода.