我正在寻找在PHP中构建我自己的模板层作为我的OOP框架的一部分,但我看起来如此正确地做这个的一些例子.我想避免解析每个html文件以找到告诉模板引擎要做什么的注释,而是使用更快/更清洁/现代的技术.我只需要一些例子,因为我用谷歌环顾四周,没有什么吸引我的眼球.我试图保持我的演示文稿和逻辑分离,但我正在做的事情需要通过html代码的大量逻辑.
,谢谢
PS我不打算使用现有的模板引擎,比如smarty,我想建立自己的模板引擎.
cle*_*tus 14
我会问你同样的问题,我会问任何人建议Smarty:
为什么要将模板语言添加到PHP,这是一种模板语言?
PHP是一种模板语言.我认为人们会忘记这一点,或者试着像纯粹的OO语言一样对待它,但事实并非如此.发挥PHP的优势.不要尝试做它不是的东西.
总而言之,很难回答你的问题,因为你没有说你的模板系统有多简单或复杂,即你打算支持哪些功能.
如果您的模板语言相对简单,那么正则表达式可能就是您的选择.然而,这对一些微不足道的案件不起作用.控制结构的嵌套可能是最常见的.在这种情况下,您需要编写某种形式的基本解析器.
让我们说你所有的模板结构都是这样的块:
{:...:}
Run Code Online (Sandbox Code Playgroud)
因为在HTML页面中相对不太可能发生(尽管为了完整性,您需要满足用户确实想要使用这些字符组合的情况.
您需要扫描文件以获取此类表达式并相应地处理它们.正则表达式可用于查找所有但不一定匹配的表达式,例如条件包括例如:
{:if ...:}
Some conditional content
{:endif:}
Run Code Online (Sandbox Code Playgroud)
为什么?因为这:
{:if *some condition*:}
{:if *some other condition*:}
Some other conditional content
{:endif:}
Some conditional content
{:endif:}
Run Code Online (Sandbox Code Playgroud)
与正则表达式匹配不能可靠地完成,因此您需要将文件解析为某种形式的词法树,然后对其进行处理.
您是否考虑过模型 - 视图 - 控制器模式?您可以使用函数和变量(内部控制器)抽象所有逻辑并将它们暴露给视图.这可能是模板化的第一步.
PS:我测试了一个名为PHPTAL(模板属性语言)的模板引擎.我喜欢它,因为您可以创建html模板,其中逻辑嵌入在自定义html属性中,而不会破坏设计.
我希望这些想法对你有所帮助
| 归档时间: |
|
| 查看次数: |
7300 次 |
| 最近记录: |