问题很简单,如何将网站页面上的php和html代码分开?
举个例子,我们有一个页面
...
<div>
<div id="form_place">
... /*some html code*/
</div>
</div>
...
因此,在"form_place“块中,有一个php代码必须填充的表单,所以大多数人都会这样写:
...
<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先生,我不要求教程仅仅是实现的原则。
发布于 2015-11-15 18:46:50
答案是:“是和不是”。
你说得对,把逻辑和可视化分开是很好的风格。
然而,您在示例中显示的并不是逻辑和可视化的混合。这是因为这些php代码段只向标记中注入一些被动数据。这是绝对好的,实际上在基于模板的方法中使用某些动态组件是没有办法的。这里令人恼火的是,php不仅是应用程序逻辑所使用的语言,而且也是模板中的动态组件。但这仍然是两件不同的事情。因此,在我看来,只要遵守两条规则,上述情况通常是可以的:
规则2也许是你应该仔细看看你的例子的东西:问题是这些变量从何而来。当然,它们不应该是一些全局变量。相反,您应该使用一些容器(对象或数组)来保存用于呈现模板的数据。
一般来说,所有这些都指向广泛的、经过充分验证的MVC方法:它确实严格地将逻辑和可视化分离开来。逻辑主要在控制器和模型中完成(MVC中的C和M),而可视化是在视图(模板)中完成的(MVC中的V)。
发布于 2015-11-15 18:53:44
不要把它看作是“将PHP和HTML分开”。那些只是工具。把它想象成“逻辑与接口分离”。您希望对代码进行排序,以便将逻辑关注点分离开来,而不是集中在任意语言和技术上。
从本质上讲,这并没有什么问题:
<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代码所做的就是将值发送到页面上。这纯粹是用户界面问题。您可以使用各种诱人的引擎以不同的方式完成这一任务,但概念是相同的。上面的代码完全是一个用户界面,除了这一点没有其他问题。
您希望避免的更多内容如下所示:
<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>
这是将数据库交互和业务逻辑放在用户界面的中间,这是您想要避免的。
不要太专注于分离技术,而要专注于分离关注点。技术经常在不同的关注点上重叠,但这些关注点不应该相互重叠。
https://stackoverflow.com/questions/33723461
复制相似问题