Expand description
模板布局 — 对齐 PHP think\Template 的布局(layout)机制
实现对齐 PHP Template::compiler() 和 Template::parseLayout()
的布局功能。
§PHP 对齐说明
§配置模式(对齐 compiler() 中的 layout_on 检查)
layout_on=true+layout_name='layout'+layout_item='{__CONTENT__}'- 编译时自动读取布局模板,将
{__CONTENT__}替换为当前模板内容 {__NOLAYOUT__}标签可单独禁用布局
§标签模式(对齐 parseLayout())
{layout name="layout" replace="{__CONTENT__}"}parseLayout()解析标签并替换- 如果
layout_on=true且layout_name== 标签name,则跳过(已由compiler()处理)
§PHP 解析顺序
compiler()— 配置模式布局(在parse()之前)parse():parseLiteral— 暂存 literalparseExtend— 继承parseLayout— 标签模式布局parseInclude— 包含- …
§PHP str_replace 行为
str_replace($search, $replace, $subject)— 单次遍历,非递归- 如果
$replace包含$search,不会再次替换 - Rust
String::replace行为一致
§PHP 源码参考
think-template\src\Template.php—compiler()(389-432),parseLayout()(529-551),layout()(316-336),getRegex('layout')(1306-1319),parseAttr()(816-833),parseTemplateFile()(1238-1259)
Functions§
- apply_
layout - 应用布局(对齐 PHP
compiler()+parseLayout())