Класс
My Chart
фактически позволяет мне создавать простые свойства (типа string
, boolean
и т. Д.), А также вложенные свойства object
, вызывающие магический метод __call
следующим образом:
$chart = new Chart();
$chart->simple = 'Hello';
$chart->newComplex();
var_dump($chart);
Вывод:
object(Chart)[1]
public 'simple' => string 'Hello' (length=5)
public 'complex' =>
object(stdClass)[2]
Я бы хотел добавить возможность создавать также вложенные object
свойства как дочерние элементы других свойств (не дочерние элементы самой диаграммы).) таким образом:
$chart->newComplex2($chart->newComplex1());
Вопрос : как использовать параметр $args
и изменить __call()
для достижения этой цели?
class Chart
{
public function __call($name, $args)
{
$type = substr($name, 0, 3);
$field = lcfirst(substr($name, strlen($type)));
switch($type)
{
case 'get': return isset($this->$field) ? $this->$field : null;
case 'new': return $this->$field = new stdClass();
}
}
}