【发布时间】:2011-04-13 00:45:43
【问题描述】:
我需要编写一个在 PHP 下运行的基本脚本/模板引擎。理想情况下,我将能够将我自己的标记语言与 (X)HTML 模板混合,并通过服务器端解析器运行文档,以使用数据库提供的 (X)HTML 动态替换我自己的标记。
不幸的是,就我对 PHP 和脚本的所有知识而言,我不太确定从哪里开始。我的第一直觉是通过某种正则表达式解析器运行整个文档,并将我的自定义标记映射到特定的 PHP 函数……但这对我来说似乎有点慢和笨拙。
存在哪些资源/教程/示例可以为我指明正确的方向?相比之下,我真的很喜欢用于 .NET MVC 的新 Razor 模板引擎......我不想在 PHP 项目中完全取消它,但构建类似的东西会很棒。
更新
好的,让我进一步完善我的解释……我为 WordPress 开发网站。我的很多客户都想定制他们的网站,但每当我开始谈论 PHP 时都会逃跑。这是一种脚本语言,看起来太复杂了,外行用户甚至都不想感兴趣。
我想做的是专门为 WordPress 创建自己的标记形式。因此,与其在主题文件中使用 PHP 函数调用(get_header() 和 get_footer() 和 if(has_posts())...),不如使用命名空间 XML(<wpml:header /> 和 <wpml:footer /> 和 <wpml:loop> ... </wpml:loop>)转换为同一件事情。将模板文件与服务器端脚本分开会做得更好(有几个主题将整个 PHP 函数直接放在主题的 PHP 模板文件中!!!)并且会使非开发人员更容易开始工作使用自定义 WordPress 主题。
考虑到这一点,TWIG 和 Mackrell 已经建议的解决方案肯定支持在文件中嵌入脚本“块”的想法,但它们并不能真正帮助我将自定义 XML/XHTML 标记解析为可识别的东西服务器端代码。
那么...在构建新的服务器端标记处理器时我应该从哪里开始?
【问题讨论】:
-
...但是 PHP 是一个“基本的脚本/模板引擎”。为什么要重新发明轮子?只需使用正则表达式从源代码中去除不允许的结构并 eval() 它。
-
Twig 没有“嵌入脚本块”,它正是您正在寻找的:一种模板语言。如果您不想使用 vanilla PHP,请不要费心编写自己的 PHP(如果以前已经编写过)。我用过它,在其中创建自己的语法非常容易。
-
@user257493 这有点极端。我正在尝试为非 PHP 开发人员开发一些东西。任何了解 PHP 的人仍然可以使用 PHP。任何不了解 PHP(并且无意学习 PHP)的人都可以使用替代语法。
标签: php xml templates scripting markup