Мне нужна унаследованная статическая функция "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();
Я бы хотел, чтобы результат был:
Класс А = Класс А
Класс B = Класс B
Но что это такое:
Класс A = Класс A
Класс B = Класс A
Моя интуиция говорит мне, что я должен быть в состоянии написать что-то в call (), чтобы определить, на какой объект ссылались, когда "call ()" был, ну, конечно, вызван. Таким образом, вместо self :: inner () это будет чем-то похожим на метод callclass :: inner (). Обнаружение правильной версии inner () для вызова из исходного вызова метода.