Пыхтачок
Новичок
Доброго времени суток.
встала задачка изменить класс у уже обьявленного класса, а именно - понизить в должности
Ну вот вроде собсвенно это мне и надо...
сериализация - не вариант - в переменных могут быть другие ресурсы и ссылки на другие уже определенные классы....
надеюсь я подробно описал свою хотелку.
может кто подскажет способы такой реализации - либо что такое точно не возможно....
____
З.Ы.
мысли в слух:
возможно создание final - функции в базовом классе которая к примеру себя порежет и вернет...
главное чтобы не было публичного метода десериализации класса, приватного - пожалуйста.
тока публичный метод - $class->downgrade
встала задачка изменить класс у уже обьявленного класса, а именно - понизить в должности

PHP:
</php
class ParentClass {
protected $a = 'a';
protected $b = 'b';
public function getA() {return $this->a;}
public final function getB() {return $this->b;}
}
class ChildClass extends ParentClass {
protected $b = 'bb'; // переопределит переменную родителя
protected $c = 'c';
public function getA() {return $this->a . $this->a;} // переопределит функцию родителя
public function getC() {return $this->c;}
}
$class = new ChildClass();
$class->getA(); // Выведет aa (используется переменная родителя и переопределенная функция потомка)
$class->getB(); // Выведет bb (используется переопределенная переменная потомка и функция родителя)
$class->getC(); // Выведет c (используется переменная потомка и функция потомка)
// ---------------
// Тут надо привести класс к его родителю (ChildClass)$class = (ParentClass)$class;
// Потеря переменных и определенных функций - это и необходимо...
// ---------------
$class->getA(); // Выведет a (используется переменная родителя и функция родителя)
$class->getB(); // Выведет bb (используется переменная родителя, но со значением потомка - мы же привели ее и функция родителя)
$class->getC(); // Error (Ну тут ничего не должно использоваться - в родителе ни класса ни переменной нету - они не нужны...)
?>
сериализация - не вариант - в переменных могут быть другие ресурсы и ссылки на другие уже определенные классы....
надеюсь я подробно описал свою хотелку.
может кто подскажет способы такой реализации - либо что такое точно не возможно....
____
З.Ы.
мысли в слух:
возможно создание final - функции в базовом классе которая к примеру себя порежет и вернет...
главное чтобы не было публичного метода десериализации класса, приватного - пожалуйста.
тока публичный метод - $class->downgrade
