如何将样式(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_startrequires .. 【参考方案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隔离的主要内容,如果未能解决你的问题,请参考以下文章

您将如何使用 CSS 设置 PHP 后缀的样式?

如何提供将页面下载为完整 HTML 文件的选项(使用 JS/CSS 重新格式化和设置样式后)

如何将外部 CSS 添加到 HTML '样式'

如何将 HTTP 标头/正文与 PHP 套接字请求隔离开来

怎么建立css外部样式文件

如何将html样式标签提取到css中