src/Leevel/View/Compiler.php
public function listsNodeCompiler(array &$theme): void
    {
        $this->checkNode($theme);
        $attr = $this->getNodeAttribute($theme);

        null === $attr['index'] && $attr['index'] = 'index';
        null === $attr['key'] && $attr['key'] = 'key';
        null === $attr['id'] && $attr['id'] = 'id';
        null === $attr['mod'] && $attr['mod'] = 2;

        if (preg_match('/[^\\d\-.,]/', (string) ($attr['mod']))) {
            $attr['mod'] = '$'.$attr['mod'];
        }

        null === $attr['empty'] && $attr['empty'] = '';
        null === $attr['length'] && $attr['length'] = '';
        null === $attr['offset'] && $attr['offset'] = '';
        $attr['name'] = $this->parseContent($attr['name']);

        $compiled = [];

        $tmp = 'if (is_array('.
            $attr['name'].')):'.PHP_EOL.'    $'.
            $attr['index'].' = 0;'.PHP_EOL;

        if ('' !== $attr['length']) {
            $tmp .= '    $tmp = array_slice('.
                $attr['name'].', '.
                $attr['offset'].', '.
                $attr['length'].');';
        } elseif ('' !== $attr['offset']) {
            $tmp .= '    $tmp = array_slice('.
                $attr['name'].', '.
                $attr['offset'].');';
        } else {
            $tmp .= '    $tmp = '.$attr['name'].';';
        }

        $tmp .= PHP_EOL.'    if (0 === count($tmp)):'.PHP_EOL.
            '        echo "'.$attr['empty'].'";';
        $tmp .= PHP_EOL.'    else:';
        $tmp .= PHP_EOL.'        foreach ($tmp as $'.$attr['key'].
            ' => $'.$attr['id'].'):';
        $tmp .= PHP_EOL.'            ++$'.$attr['index'].';'.PHP_EOL;
        $tmp .= '            '.'$mod = $'.$attr['index'].' % '.
            $attr['mod'].';';

        $compiled[] = $this->withPhpTag($tmp);
        $compiled[] = $this->getNodeBody($theme);
        $compiled[] = '        '.$this->withPhpTag(
            'endforeach;'.PHP_EOL.'    endif;'.
            PHP_EOL.'else:'.PHP_EOL.'    echo "'.
            $attr['empty'].'";'.PHP_EOL.'endif;'
        );

        $theme['content'] = implode('', $compiled);
    }
public function listsNodeCompiler(array &$theme): void
    {
        $this->checkNode($theme);
        $attr = $this->getNodeAttribute($theme);

        null === $attr['index'] && $attr['index'] = 'index';
        null === $attr['key'] && $attr['key'] = 'key';
        null === $attr['id'] && $attr['id'] = 'id';
        null === $attr['mod'] && $attr['mod'] = 2;

        if (preg_match('/[^\\d\-.,]/', (string) ($attr['mod']))) {
            $attr['mod'] = '$'.$attr['mod'];
        }

        null === $attr['empty'] && $attr['empty'] = '';
        null === $attr['length'] && $attr['length'] = '';
        null === $attr['offset'] && $attr['offset'] = '';
        $attr['name'] = $this->parseContent($attr['name']);

        $compiled = [];

        $tmp = 'if (is_array('.
            $attr['name'].')):'.PHP_EOL.'    $'.
            $attr['index'].' = 0;'.PHP_EOL;

        if ('' !== $attr['length']) {
            $tmp .= '    $tmp = array_slice('.
                $attr['name'].', '.
                $attr['offset'].', '.
                $attr['length'].');';
        } elseif ('' !== $attr['offset']) {
            $tmp .= '    $tmp = array_slice('.
                $attr['name'].', '.
                $attr['offset'].');';
        } else {
            $tmp .= '    $tmp = '.$attr['name'].';';
        }

        $tmp .= PHP_EOL.'    if (0 === count($tmp)):'.PHP_EOL.
            '        echo "'.$attr['empty'].'";';
        $tmp .= PHP_EOL.'    else:';
        $tmp .= PHP_EOL.'        foreach ($tmp as $'.$attr['key'].
            ' => $'.$attr['id'].'):';
        $tmp .= PHP_EOL.'            ++$'.$attr['index'].';'.PHP_EOL;
        $tmp .= '            '.'$mod = $'.$attr['index'].' % '.
            $attr['mod'].';';

        $compiled[] = $this->withPhpTag($tmp);
        $compiled[] = $this->getNodeBody($theme);
        $compiled[] = '        '.$this->withPhpTag(
            'endforeach;'.PHP_EOL.'    endif;'.
            PHP_EOL.'else:'.PHP_EOL.'    echo "'.
            $attr['empty'].'";'.PHP_EOL.'endif;'
        );

        $theme['content'] = implode('', $compiled);
    }
lists 增强版.

@param array $theme