Haanga_Compiler::get_context PHP Method

get_context() public method

public get_context ( $variable )
    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;
    }