protected function new_element_value(&$signal) { $element = $signal->data_element($this->from_data_key($signal)); $sub = get_subelement($element, $this->from_sublevels); unset_subelement($element, $this->from_sublevels); $signal->set_data_element($element, $data_key); return $sub; }
function get_subelement($compound, $subspath) { if (empty($subspath)) { return $compound; } $level = array_shift($subspath); if (is_array($compound)) { if (array_key_exists($level, $compound)) { return get_subelement($compound[$level], $subspath); } else { return NULL; } } elseif (is_object($compound)) { if (property_exists($level, $compound)) { return get_subelement($compound->{$level}, $subspath); } else { return NULL; } } else { return NULL; } }
protected function new_element_value(&$signal) { $element = get_subelement($signal->data_element($this->from_data_key($signal)), $this->from_sublevels); return $this->check_and_modify_element($element); }
protected function element_property($element, $sublevels) { return get_subelement($element, $sublevels); }