在PHP模板做的权利。。。怎样
几年前,我用PHP创建了一个小网站,现在这个网站已经发展壮大了,你可能会猜到它相当混乱。虽然我有一个单独的模板来完成html的最终输出,但我最终还是要在代码的“业务逻辑”部分处理很多html 我的主要问题是,页面包含各种小部件(如“最新条目”、广告等),这些小部件在页面之间会发生变化,因此它们的html-(模板)代码无法硬编码到模板中。事实上,甚至主内容容器也是一个小部件,因为页面结构(或布局)总是相同的 因此,我最终得到了一个包含$templateData['mainContent']、$templateData['widget1']、$templateData['widget2']等的数组,这些数组是在代码的业务逻辑部分生成的 我如何解决这个问题 环顾四周一段时间后,似乎有两种方法可以解决这个问题:在PHP模板做的权利。。。怎样,php,html,template-engine,templating,Php,Html,Template Engine,Templating,几年前,我用PHP创建了一个小网站,现在这个网站已经发展壮大了,你可能会猜到它相当混乱。虽然我有一个单独的模板来完成html的最终输出,但我最终还是要在代码的“业务逻辑”部分处理很多html 我的主要问题是,页面包含各种小部件(如“最新条目”、广告等),这些小部件在页面之间会发生变化,因此它们的html-(模板)代码无法硬编码到模板中。事实上,甚至主内容容器也是一个小部件,因为页面结构(或布局)总是相同的 因此,我最终得到了一个包含$templateData['mainContent']、$te
还有别的选择吗?您是如何解决这个问题的?我以前遇到过这个问题,我的想法/问题与您目前的想法/问题几乎相同。我强迫自己学习一种模板语言。受Django模板语言影响的轻量级模板语言。它的占用空间非常小,在内存使用方面几乎看不见
给自己一些时间去适应它,然后决定你是否想要它 我以前遇到过这个问题,我的想法/问题与您目前的想法/问题几乎相同。我强迫自己学习一种模板语言。受Django模板语言影响的轻量级模板语言。它的占用空间非常小,在内存使用方面几乎看不见
给自己一些时间去适应它,然后决定你是否想要它 一个想法是创建模板驱动/视图驱动的页面,访问web服务或API,为您所需的所有数据提供服务 您可以将URL链接到模板,模板通过web服务(AJAX样式)或静态方式调用数据检索函数 然后,业务逻辑部分仅限于处理输入和准备一般检索,并提供过滤或排序等机制,而模板确定如何过滤、如何排序或如何分页等 我建议您使用适当的对象关系映射(ORM)框架/模式(请参阅或中的),该框架/模式允许您使用通用检索对象,这些对象可以由模板重新配置以满足其需要(例如前面提到的过滤和排序) 然后,当需要时,通过调用特殊方法(如
find()
、load()
或检索对象上的类似方法)在模板中执行实际检索
编辑:关于其他人建议的模板框架,我不太喜欢它们,因为它们经常重复PHP中已经存在的功能,通过添加另一个解析器层来重新发明轮子;但是,任何一个好的模板框架都有一个好处,那就是缓存(可能有一些基于PHP的模板引擎也支持缓存)。一个想法是创建模板驱动/视图驱动的页面,访问web服务或API,为您所需的所有数据提供服务 您可以将URL链接到模板,模板通过web服务(AJAX样式)或静态方式调用数据检索函数 然后,业务逻辑部分仅限于处理输入和准备一般检索,并提供过滤或排序等机制,而模板确定如何过滤、如何排序或如何分页等 我建议您使用适当的对象关系映射(ORM)框架/模式(请参阅或中的),该框架/模式允许您使用通用检索对象,这些对象可以由模板重新配置以满足其需要(例如前面提到的过滤和排序) 然后,当需要时,通过调用特殊方法(如
find()
、load()
或检索对象上的类似方法)在模板中执行实际检索
编辑:关于其他人建议的模板框架,我不太喜欢它们,因为它们经常重复PHP中已经存在的功能,通过添加另一个解析器层来重新发明轮子;但是,任何一个像样的模板框架都有一个好处,那就是缓存(可能有一些基于PHP的模板引擎也支持缓存)。将这些漂亮的数组分配给smarty,并学习在tpl文件上迭代它们。 这比看起来容易。 当您需要多次包含同一段html/php时,只需重新包含它 smarty是否快速可靠?是将那些漂亮的数组分配给t