proger/htmlki

无缝模板化,秉承HTML精神。

dev-master 2021-01-27 17:42 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:31:00 UTC


README

HTMLki 采用非主流方法。与发明另一个PHP或Mustache不同,它为古老的HTML注入了新特性——循环、变量、本地化、自定义标签等,而不会破坏其原有的简洁形式。

<ul $menu>
  <li "$classes">
    <img $icon src=$icon>
    <a "$url" target=$target>$caption</a>
  </li>
</endul>

这里我们看到的是

  • 一个循环:如果 $menu 中至少有一个项目,则输出 <ul>
  • 一个“if”:如果 $icon 不为假值,则输出 <img>
  • 一些属性魔法: <li "classes"><li class="classes">),<a "url"><a href="url">
  • 反XSS: $caption 是一个变量,默认是转义的

它没有依赖,可以在 PHP 5.6 及以上版本 中直接使用。

[ 完整文档 ]

用法

适用于Composer,在 Packagist 上通过 proger/htmlki 可用。

独立

// Configure your autoloader to load the HTMLki namespace from class/HTMLki/.

echo HTMLki\HTMLki::template(HTMLki\HTMLki::compile('<radio>'));
  //=> <input type="radio">

功能

因为HTMLki是加强版的HTML,任何带有HTML/PHP语法方案的文本编辑器在大多数情况下都能正确高亮显示。

HTMLki为HTML注入了

  • XSS防护 - 默认输出HTML转义
  • 循环和条件 - 如上面的示例: <ul $list><if $a == 3>
  • 属性魔法 - 自动扩展 <form file><form enctype="multipart/form-data"><div "span-6"><div class="span-6">
  • 标签魔法
    • 快捷方式(<radio><input type="radio">
    • 多标签(<thead/tr><thead><tr>
    • 单标签(<textarea /><textarea></textarea>
    • 等等
  • 语言行 - 简单地是任何用双引号包围的文本: <b>"Hello!"</b>
  • 表达式和变量 - 如 { date('d.m.y') }
  • PHP代码 - 正如你所猜测: <?='string'?> - 短PHP标签自动扩展,因此你不必关心任何特定的 php.ini 设置
  • 函数标签 - 以自定义标签的形式,如 <include>
  • 输入检查 - 清楚地看到模板接受什么: $>currentPage@1 int <= $lastPage
  • 大多数构造可以转义,例如 ""Not a language."{{ not_an_expr }}$$notAVar
  • 这个列表并不完整 - 请参阅 文档 了解所有增强功能

上面的内容不需要任何额外的集成代码。然而,你可以通过添加特定标签、属性等处理程序来调整HTMLki,使其成为适用于特定应用的理想标记。

例如,HTMLki 可以自动将 srchrefaction 属性扩展为完整的 URL,或者有像 <errors> 这样的标签,输出与某些输入字段(文本区域、选择框等)关联的错误列表。