如何将样式(css + html)与php隔离
Posted
技术标签:
【中文标题】如何将样式(css + html)与php隔离【英文标题】:how to isolate the style (css+html) from php 【发布时间】:2012-07-13 18:21:27 【问题描述】:我如何将样式 (css+html) 与 php 隔离开来,就像在 php 文件中只放入一些行,包括整个 style 或主题。
例如:
echo
eval_template("header") .
eval_template("body") .
eval_template("footer")
所以将来我可以在不接触 php 文件的情况下更改整个样式 有什么想法吗?
【问题讨论】:
真棒问题:为什么不更多人考虑这种分离! ..无论如何,搜索“PHP模板”或类似的;然后查看是否/如何应用任何 现有 解决方案。这将允许构建一个更好(和更有针对性的问题)。在任何情况下,HTML 相对难以完全分离,因为它依赖于结构(分离范围因方法/模式而异:带逻辑的模板?仅绑定?MVP?适配器?),但是CSS 相对容易与普通的外部样式表分离。 我使用ob_start
或 requires
..
【参考方案1】:
有很多方法可以做到这一点...
这是一个关于用普通 PHP 进行模板化的教程 http://www.phpro.org/tutorials/Introduction-to-PHP-templating.html
您还可以查看那里的许多模板引擎。 树枝就是其中之一:http://twig.sensiolabs.org/
【讨论】:
【参考方案2】:就个人而言,我喜欢手动操作。
PHP 不应该同时返回 css 和 html 代码,或者更好的是,它根本不应该返回客户端代码,而是返回特定部分的依赖关系。您永远不想修改包含许多不同内容的文件。
为了将 css+html 与 php 代码分开,我通常做的是使用 include("..."); 完成的层次结构;和 include_once("...")。例如:include_once("header.php") > include("menu.php") > html 语义,css 类根据当前上下文正确初始化。
然后你在 header.php 中导入你的 css / js 外部脚本,这样你就不必修改整个东西,除非一切都改变了,或者你有一个完整的功能要添加到网站上。网站的每个部分都可以这样做。
希望这会有所帮助,对我来说,它极大地减少了调试时间,因为所有重要的事情都只需执行一次,然后在最重要的部分,您可以根据需要分开。
【讨论】:
【参考方案3】:你可以使用很多模板引擎来做到这一点,我更喜欢使用与 symfony2 框架集成的 twig。
Twig 非常棒,因为它非常易于使用且非常灵活,您可以使用继承来创建一个通用布局,该布局可以使用特殊标签在某些部分进行扩展和覆盖。这是我在 Symfony 网站上找到的指南,但对于理解 twig 背后的逻辑非常有用:http://symfony.com/doc/current/book/templating.html
【讨论】:
以上是关于如何将样式(css + html)与php隔离的主要内容,如果未能解决你的问题,请参考以下文章