src/Template.php
static private function recompileFolder(string $module, string $folder): int
    {
        //本模块模板文件目录
        $path = self::$root . 'program/module/' . $module . '/view/' . $folder;

        //如果目录不存在
        if (!is_dir($path) or $folder == 'add/table') {
            return 0;
        }

        // 本目录及子目录重新编译的模板计数
        $compiled = 0;

        //遍历目录
        $root = new \DirectoryIterator($path);
        foreach ($root as $f) {
            // 不处理 . .. *.svn
            if ($f->isDot() or $f->getFilename() == '.svn') {
                continue;
            }

            //遍历子目录
            if ($f->isDir()) {
                $compiled += self::recompileFolder($module, trim($folder . '/' . $f->getFilename(), '/'));
                continue;
            }

            //只编译tpl后缀的文件
            if ($f->getExtension() != 'tpl') {
                continue;
            }

            //模板文件名
            $filename = $f->getFilename();

            //编译前文件名,编译后文件名
            $source = $path . '/' . $filename;
            $target = str_replace('/program/module/', '/run/view_c/', $path);

            echo 'Recompiled ' . $source . '<br/>';

            //编译一个模板文件
            $compiled += self::compile($source, $target);
        }

        //返回编译了多少个模板
        return $compiled;
    }
static private function recompileFolder(string $module, string $folder): int
    {
        //本模块模板文件目录
        $path = self::$root . 'program/module/' . $module . '/view/' . $folder;

        //如果目录不存在
        if (!is_dir($path) or $folder == 'add/table') {
            return 0;
        }

        // 本目录及子目录重新编译的模板计数
        $compiled = 0;

        //遍历目录
        $root = new \DirectoryIterator($path);
        foreach ($root as $f) {
            // 不处理 . .. *.svn
            if ($f->isDot() or $f->getFilename() == '.svn') {
                continue;
            }

            //遍历子目录
            if ($f->isDir()) {
                $compiled += self::recompileFolder($module, trim($folder . '/' . $f->getFilename(), '/'));
                continue;
            }

            //只编译tpl后缀的文件
            if ($f->getExtension() != 'tpl') {
                continue;
            }

            //模板文件名
            $filename = $f->getFilename();

            //编译前文件名,编译后文件名
            $source = $path . '/' . $filename;
            $target = str_replace('/program/module/', '/run/view_c/', $path);

            echo 'Recompiled ' . $source . '<br/>';

            //编译一个模板文件
            $compiled += self::compile($source, $target);
        }

        //返回编译了多少个模板
        return $compiled;
    }
编译一个目录,如果有子目录,则递归
@param string $module 模块名
@param string $folder 目录名,相对于模板根路径 ,初始为'',之后 为'admin/',之类
@return int 调用层数