Разбираюсь с таким важным понятием как ООП и применение его в php. Теорию уже прочел вроде понял. Но как дело дошло до практики которую сам придумал чет застрял. Итак суть задачи и мое решение.
Есть некий xml который хранит в себе жилые комплексы, они в себе дома, далее квартиры (но пока остановлюсь на первом).
Структура следующая
<complexes>
<complex>
<id>1</id>
<name>ЖК 1</name>
<complex>
<complex>
<id>2</id>
<name>ЖК 2</name>
<complex>
<complexes>
Полей намного больше, но мне они не нужны. Хотел собрать свой объект в котором буду эти поля со своими названиями свойств объекта.
Создаю класс "Комплексы" и "Комплекс".
class Complexes {
private $complexes = array();
public function addComplex($id, $complex) {
$this->complexes[$id] = $complex;
}
public function showComplexes() {
print_r($this);
}
}
class Subject {
protected $id;
protected $name;
function __construct($subject) {
$this->id = $subject->id;
$this->name = $subject->name;
}
public function var_d() {
print_f($this);
}
}
Создаю объект "Комплексы"
$complexes = new Complexes();
Далее в цикле пробегаю комплексы, создаю объекты (как то их дополнительно обрабатываю) и добавляю в "Комплексы"
foreach($xml as $c => $complex) {
$complexObj = new Subject($complex);
// что-то свое здесь делаю
$complexes->addComplex($complex->id, $complexObj);
}
В конце пробую вывести вот так
$complexes->showComplexes();
И массив пустой
Но если в цикле поставить вывод $complexObj->var_d(); то все норм, но структура немного странная (по крайней мере для меня)
Subject Object
(
[id:protected] => SimpleXMLElement Object
(
[0] => 1
)
[name:protected] => SimpleXMLElement Object
(
[0] => ЖК 1
)
)
Subject Object
(
[id:protected] => SimpleXMLElement Object
(
[0] => 2
)
[name:protected] => SimpleXMLElement Object
(
[0] => ЖК 2
)
)