首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >网站结构/分离html和php代码

网站结构/分离html和php代码
EN

Stack Overflow用户
提问于 2015-11-15 18:41:05
回答 2查看 63关注 0票数 0

问题很简单,如何将网站页面上的php和html代码分开?

举个例子,我们有一个页面

代码语言:javascript
运行
复制
    ...
  <div>
        <div id="form_place">
            ... /*some html code*/
        </div>  
    </div>
    ...

因此,在"form_place“块中,有一个php代码必须填充的表单,所以大多数人都会这样写:

代码语言:javascript
运行
复制
...
<div>
    <div id="form_place">
        ... /*some html code of forms*/
        <?php echo $var1; ?>
        /*some html code of forms*/
        <?php echo $var2; ?>
        /*some html code of forms*/...
    </div>  
</div>
...

然而,正如我正确理解的那样,正确的方法是分离php和html代码。那么现在的问题是如何把它分开呢?在块上划分html代码,然后按顺序包括它们,这并不是一个变量,因为如果我们将有数百万个变量,那么我们需要将HTMl页面除以百万个部分,并包含它们,这将大大增加加载时间。

因此,我想到的只是php加载整个html页面,并将变量放在它应该在的位置。但我不知道该怎么实现。

我只需要知道在这种情况下人们通常会做什么。问题是一般性的,并收到了答复。GolezTrol先生,我不要求教程仅仅是实现的原则。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-15 18:46:50

答案是:“是和不是”。

你说得对,把逻辑和可视化分开是很好的风格。

然而,您在示例中显示的并不是逻辑和可视化的混合。这是因为这些php代码段只向标记中注入一些被动数据。这是绝对好的,实际上在基于模板的方法中使用某些动态组件是没有办法的。这里令人恼火的是,php不仅是应用程序逻辑所使用的语言,而且也是模板中的动态组件。但这仍然是两件不同的事情。因此,在我看来,只要遵守两条规则,上述情况通常是可以的:

  1. 在这样一个模板中,php的使用应该限制在简单的条件、循环和变量引用上。生成标记所需的内容,包括表、碎屑等。但是不应该进行复杂的函数调用,没有存储访问,什么都不做。
  2. 用于此目的的数据应该是专门准备在模板内使用的,并且通常是在容器内传递的。

规则2也许是你应该仔细看看你的例子的东西:问题是这些变量从何而来。当然,它们不应该是一些全局变量。相反,您应该使用一些容器(对象或数组)来保存用于呈现模板的数据。

一般来说,所有这些都指向广泛的、经过充分验证的MVC方法:它确实严格地将逻辑和可视化分离开来。逻辑主要在控制器和模型中完成(MVC中的C和M),而可视化是在视图(模板)中完成的(MVC中的V)。

票数 1
EN

Stack Overflow用户

发布于 2015-11-15 18:53:44

不要把它看作是“将PHP和HTML分开”。那些只是工具。把它想象成“逻辑与接口分离”。您希望对代码进行排序,以便将逻辑关注点分离开来,而不是集中在任意语言和技术上。

从本质上讲,这并没有什么问题:

代码语言:javascript
运行
复制
<div>
    <div id="form_place">
        ... /*some html code of forms*/
        <?php echo $var1; ?>
        /*some html code of forms*/
        <?php echo $var2; ?>
        /*some html code of forms*/...
    </div>  
</div>

这些PHP代码所做的就是将值发送到页面上。这纯粹是用户界面问题。您可以使用各种诱人的引擎以不同的方式完成这一任务,但概念是相同的。上面的代码完全是一个用户界面,除了这一点没有其他问题。

您希望避免的更多内容如下所示:

代码语言:javascript
运行
复制
<div>
    <div id="form_place">

        <?php
            // a bunch of database interactions to get a result
        ?>

        ... /*some html code of forms*/
        <?php echo $var1; ?>

        <?php
            // a bunch of calculations to transform results
        ?>

        /*some html code of forms*/
        <?php echo $var2; ?>
        /*some html code of forms*/...
    </div>  
</div>

这是将数据库交互和业务逻辑放在用户界面的中间,这是您想要避免的。

不要太专注于分离技术,而要专注于分离关注点。技术经常在不同的关注点上重叠,但这些关注点不应该相互重叠。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33723461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档