ФорумПрограммированиеPHP для идиотовPHP и ООП → Получить свойства объекта

Получить свойства объекта

  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 25 августа 2009 г. 5:20

    Как получить свойства объекта, с их разделением по родительским классам?

    class Root
    {
    public function getProps()
    {
    // get props
    }
    }

    class One extends Root
    {
    public $anyprop;
    }

    class Two extends One
    {
    public $propany;
    }

    $two = new Two;
    $two->getProps();
    /*
    Массив

    [One]
    anyprop

    [Two]
    propany
    */
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 25 августа 2009 г. 5:21, спустя 1 минуту 45 секунд

    reflection
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 25 августа 2009 г. 6:09, спустя 48 минут 5 секунд

    CTAPbIu_MABP, спасибо.

    class Root
    {
    public function getProps()
    {
    $result = array();
    $cur_class = get_class($this);
    $reflection = new ReflectionClass($cur_class);
    $cur_props = get_class_vars($cur_class);

    $props = $reflection->getProperties();
    foreach ($props as $prop)
    {
    $class = $prop->getDeclaringClass()->getName();
    $name = $prop->getName();
    $value = $cur_props[$name];
    $result[$class][][$name] = $value;
    }

    return $result;
    }
    }

    class One extends Root
    {
    public $anyprop = 1;
    }

    class Two extends One
    {
    public $propany = 2;
    public $anyprop = 3;
    }

    $two = new Two;
    $two->propany = 4;
    print_r($two->getProps());

Пожалуйста, авторизуйтесь, чтобы написать комментарий!