2013-12-14 4 views
2

Рассмотрим следующий пример:Как я могу вызвать родительский метод вне класса?

class A implements Serializable { 
    serialize() {} 
} 
class B extends A { 
    serialize() {} 
} 

класса А является настойчивым, но минимальный класс, используемый на каждой странице. класс B является только временным администратором (используется на экране настроек), который заполняет элементы путем чтения файлов.

Мне нужно сериализовать объект и хранить его в базе данных дважды, один раз для обычных страниц, а второй (с ограниченным сроком службы) для страницы администратора.

$instance = new B(); // and populate 
$data = serialize($instance); 

Это всегда вызовет метод over-ridden. Есть ли способ, которым я мог бы наложить $instance на тип A, чтобы я мог позвонить по методу сериализации class A?

+0

Как насчет отправки токена вместо кастинга и проверки его с помощью метода B, чтобы проверить, является ли метод вызова А? – silentboy

+0

@silentboy Вы не можете отправлять дополнительные параметры вместе с сериализацией. Уже пробовал. – Twifty

+0

Оберните это другим способом. – silentboy

ответ

0

Ответ: нет, вы не можете. Дети переопределяют родительскую функциональность метода и полностью переопределяют его. Для этого потребуются статические методы.

+0

Учитывая, что класс по-прежнему поддерживает vtable, я бы подумал, что для этого будет какой-то обман. – Twifty

Смежные вопросы