private function _fromModel(self $data) { foreach ($this->structure as $key => $properties) { switch ($properties['type']) { case 'o': if (isset($properties['model']) && $data->has($key)) { $m = $properties['model']::from($data->get($key)); $this->set($key, $m, true); break; } default: $this->set($key, $data->get($key), true); } } return $this; }
public function __construct($spec = array()) { $data = array(); foreach ($spec as $k => $properties) { $this->add($k, $properties); if (isset($properties['value'])) { $data[$k] = $properties['value']; } elseif (isset($properties['default'])) { $data[$k] = $properties['default']; } } parent::__construct($data); }