function get_context($variable) { if (!is_array($variable)) { $variable = array($variable); } $varname = $variable[0]; if (isset($this->context[$varname])) { if (count($variable) == 1) { return $this->context[$varname]; } $var =& $this->context[$varname]; foreach ($variable as $id => $part) { if ($id != 0) { if (is_array($part) && isset($part['object'])) { if (is_array($part['object']) && isset($part['object']['var'])) { /* object $foo->$bar */ $name = $part['object']['var']; $name = $this->get_context($name); if (!isset($var->{$name})) { return NULL; } $var =& $var->{$name}; } else { if (!isset($var->{$part['object']})) { return NULL; } $var =& $var->{$part['object']}; } } else { if (is_object($var)) { if (!isset($var->{$part})) { return NULL; } $var =& $var->{$part}; } else { if (!is_scalar($part) || empty($part) || !isset($var[$part])) { return NULL; } $var =& $var[$part]; } } } } $variable = $var; unset($var); return $variable; } return NULL; }