企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
> 如果系统自带的解析规则不能满足需求, 可以使用 Angular::extend()方法进行扩展, 此方法有两个参数, 详细请看下面实例. ## 入口文件: /test/index.php ``` <?php use think\angular\Angular; require '../src/Angular.php'; // 自定义扩展, 打印变量的值 Angular::extend('dump', function ($content, $param, $angular) { $old = $param['html']; $new = '<pre>'; unset($param[0], $param[1], $param[2], $param[3], $param[4], $param[5]); $new .= '<?php var_dump(' . $param['value'] . '); ?>'; $new .= '<pre>'; return str_replace($old, $new, $content); }); // 自定义扩展, 变量+1 Angular::extend('inc', function ($content, $param, $angular) { $old = $param['html']; $new = '<?php ' . $param['value'] . '++; ?>'; $new .= Angular::removeExp($old, $param['exp']); return str_replace($old, $new, $content); }); // 自定义扩展, 变量-1 Angular::extend('dec', function ($content, $param, $angular) { $old = $param['html']; $new = '<?php ' . $param['value'] . '--; ?>'; $new .= Angular::removeExp($old, $param['exp']); return str_replace($old, $new, $content); }); / 配置 $config = [ 'debug' => true, // 是否开启调试, 开启调试会实时生成缓存 'tpl_path' => './view/', // 模板根目录 'tpl_suffix' => '.html', // 模板后缀 'tpl_cache_path' => './cache/', // 模板缓存目录 'tpl_cache_suffix' => '.php', // 模板缓存后缀 'directive_prefix' => 'php-', // 指令前缀 'directive_max' => 10000, // 指令的最大解析次数 ]; // 实例化 $view = new Angular($config); // 输出解析结果 $view->display('index'); ``` ## 模板文件: /text/view/index.html ``` <!DOCTYPE html> <html> <head> <title>diy test</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div php-dump="$navs"></div> <div php-init="$i = 0" php-inc="$i" php-inc="$i">{$i}</div> <div php-dec="$i">{$i}</div> </body> </html> ``` ## 解析后 ``` <!DOCTYPE html> <html> <head> <title>diy test</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <pre><?php var_dump($navs); ?><pre> <?php $i = 0; $i++; $i++; ?> <div><?php echo $i; ?></div> <?php $i--; ?> <div><?php echo $i; ?></div> </body> </html> ```