Я использую Reflections для настройки различных значений в объектах, и у меня есть объект, родитель которого мне нужно настроить.
Например:
class Ford extends Car
{
private $model;
}
class Car
{
private $color;
}
Я могу легко использовать Reflection для изменения модели, но как я могу отделить родителя от дочернего, чтобы я мог использовать Reflection на родителя?
Некоторые псевдо-коды для того, что я надеюсь, возможно:
$ford = new Ford();
$manipulator = new Manipulator($ford);
$manipulator->set('model','F-150');
$manipulator->setParentValue('color','red');
class Manipulator
{
public function __construct($class) {
$this->class = $class;
$this->reflection = new \ReflectionClass($class);
}
public function set($property,$value) {
$property = $this->reflection->getProperty($property);
$property->setAccessible(true);
$property->setValue($this->class,$value);
}
public function setParentValue() {
$parent = $this->reflection->getParent();
$property = $this->reflection->getProperty($property);
$property->setAccessible(true);
// HOW DO I DO THIS?
$property->setValue($this->class::parent,$value);
}
}
Суть вопроса:
В этом случае, как я могу полностью изменить цвет $ за пределами объекта?
Есть ли что-то вроде Ford :: parent () или get_parent_object ($ ford)?
Примечание
Объекты, использованные выше, не являются точным сценарием, а просто используются для иллюстрации концепции. В случае с реальным миром у меня есть отношения родитель / ребенок, и мне нужно иметь возможность получать / изменять значения в каждом из них извне.
ОТВЕТ
Пожалуйста, проверьте мой ответ ниже ... Я понял это.