src/Leevel/View/Compiler.php
protected function parseContent(string $content, bool $isFunc = true): string
    {
        // 以|分割字符串,数组第一位是变量名字符串,之后的都是函数参数&&函数{$hello|md5}
        $var = explode('|', $content);

        // 弹出第一个元素,也就是变量名
        $tmp = array_shift($var);

        // 访问数组元素或者属性
        if (strpos($tmp, '.')) {
            $vars = explode('.', $tmp);

            // 这里 . 作为字符连接符
            if ("'" === ($firstLetter = substr($vars[1], 0, 1)) or
                '"' === $firstLetter or
                '$' === $firstLetter) {
                $name = '$'.$vars[0].'.'.$vars[1].($this->arrayHandler($vars, false));
            } else {
                $name = '$'.$vars[0].'->'.$vars[1].($this->arrayHandler($vars, true));
            }

            $tmp = $vars[0];
        }

        // $hello['demo'] 方式访问数组
        elseif (strpos($tmp, '[')) {
            $name = '$'.$tmp;
            preg_match('/(.+?)\[(.+?)\]/is', $tmp, $matches);
            $tmp = $matches[1];
        } else {
            $name = "\$${tmp}";
        }

        // 如果有使用函数
        if (true === $isFunc && count($var) > 0) {
            // 传入变量名,和函数参数继续解析,这里的变量名是上面的判断设置的值
            $name = $this->parseVarFunction($name, $var);
        }

        $name = str_replace('^', ':', $name);

        return $name ?: '';
    }
protected function parseContent(string $content, bool $isFunc = true): string
    {
        // 以|分割字符串,数组第一位是变量名字符串,之后的都是函数参数&&函数{$hello|md5}
        $var = explode('|', $content);

        // 弹出第一个元素,也就是变量名
        $tmp = array_shift($var);

        // 访问数组元素或者属性
        if (strpos($tmp, '.')) {
            $vars = explode('.', $tmp);

            // 这里 . 作为字符连接符
            if ("'" === ($firstLetter = substr($vars[1], 0, 1)) or
                '"' === $firstLetter or
                '$' === $firstLetter) {
                $name = '$'.$vars[0].'.'.$vars[1].($this->arrayHandler($vars, false));
            } else {
                $name = '$'.$vars[0].'->'.$vars[1].($this->arrayHandler($vars, true));
            }

            $tmp = $vars[0];
        }

        // $hello['demo'] 方式访问数组
        elseif (strpos($tmp, '[')) {
            $name = '$'.$tmp;
            preg_match('/(.+?)\[(.+?)\]/is', $tmp, $matches);
            $tmp = $matches[1];
        } else {
            $name = "\$${tmp}";
        }

        // 如果有使用函数
        if (true === $isFunc && count($var) > 0) {
            // 传入变量名,和函数参数继续解析,这里的变量名是上面的判断设置的值
            $name = $this->parseVarFunction($name, $var);
        }

        $name = str_replace('^', ':', $name);

        return $name ?: '';
    }
解析变量内容.

@param string $content
@param bool   $isFunc

@return string