wj008/sdopx

sdopx Embedded php templates

Maintainers

Details

gitee.com/wj008/sdopx

Installs: 1 005

Dependents: 1

Suggesters: 0

Security: 0

pkg:composer/wj008/sdopx

4.0.5 2025-11-21 19:10 UTC

README

Sdopx 是一个基于 PHP 的高性能模板引擎,提供灵活的模板编译和渲染功能,适用于 Web 开发中的视图层处理。

特性

  • 模板继承:支持模板继承机制,便于构建可复用的页面结构。
  • 编译优化:将模板编译为原生 PHP 代码,提升执行效率。
  • 插件系统:提供丰富的插件支持,如变量修饰符、自定义标签等。
  • 多资源支持:支持从文件、字符串、Base64 等多种资源加载模板。
  • 调试功能:内置调试支持,便于开发过程中排查问题。

安装

使用 Composer 安装 Sdopx:

composer require wj008/sdopx

使用示例

基本用法

use sdopx\Sdopx;

// 初始化模板引擎
$sdopx = new Sdopx();

// 设置模板目录
$sdopx->setTemplateDir(__DIR__ . '/templates');

// 分配变量
$sdopx->assign('name', 'Sdopx');

// 渲染模板
$sdopx->display('index.tpl');

模板语法示例

{* index.tpl *}
Hello, {$name}!

其他语法请查阅 http://sdopx.wj008.net

Sdopx 4.0.4 以上新语法特点

4.0.4 版本优化了代码结构,修正错误输出的提示内容,以及定位错误代码位置

  1. 左分界符号右侧如有空格及换行将被视为HTML代码不被解析为模板
    <style>
     body {
        color: red;
     }
     .css1 {  color: red; }
    </style>
    <script>
     function abc() {
         alert('ceshide');
     }
     abc();
    </script>
    
    • 以上代码将会原样输出
  2. 新增模板内直接变量赋值及添加变量链接修饰器|cat
    {$name = 'sdopx'}
    {$temp = $name|cat:' ok?'}
    
  3. 支持PHP内置的字符串处理函数以修饰器的形式调用 如:
    {$temp|strlen}
    {$temp|trim}
    {$temp|ucfirst}
    {$temp|substr:1:3}
    {$temp|base64_encode}
    {'world'|str_replace:'sdopx':$temp}
    ...
    

插件扩展

Sdopx 提供多种内置插件,同时也支持自定义插件扩展。

修饰符插件

  • cat: 拼接字符串
  • default: 设置默认值
  • lower: 转换为小写
  • upper: 转换为大写
  • truncate: 截断字符串
  • nl2br: 将换行符转换为 <br> 标签

自定义标签插件

  • volist: 遍历数组输出
  • cycle: 循环输出不同值
  • extends: 模板继承
  • block: 定义可重写区块

资源类型

Sdopx 支持多种资源类型加载模板:

  • FileResource:从文件系统加载模板
  • StringResource:从字符串加载模板
  • Base64Resource:从 Base64 编码字符串加载模板
  • ExtendsResource:支持模板继承的资源类型

调试支持

启用调试模式后,Sdopx 会在模板渲染出错时提供详细的错误上下文信息,帮助开发者快速定位问题。

Sdopx::$debug = true;

贡献指南

欢迎贡献代码和改进文档。请遵循以下步骤:

  1. Fork 项目
  2. 创建新分支 (git checkout -b feature/new-feature)
  3. 提交更改 (git commit -am 'Add new feature')
  4. 推送分支 (git push origin feature/new-feature)
  5. 创建 Pull Request

许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。