问题很简单,如何在网页上分离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 我不仅仅要求教程实现原理。
答案 0 :(得分:1)
答案是:&#34;是和否#34; ...
你是对的,将逻辑和可视化分开是一种很好的风格。
但是,您在示例中显示的是不是逻辑和可视化的混合。那是因为那些php片段只会将一些被动数据注入标记。这绝对没问题,实际上在基于模板的方法中无法使用某些动态组件。这里令人恼火的是,php不仅是用于应用程序逻辑的语言,还是模板中的动态组件。但这仍然是两件不同的事情。所以在我看来,如果保留两个规则,上面通常都可以。
这样的模板中的php用法应该仅限于条件,循环和变量引用。您需要生成标记,包括表格,破坏行等。不应该进行复杂的函数调用,没有存储访问,什么也没有。
用于此目的的数据应该是专门为在模板内使用而准备的,并且通常在容器内移交。
规则2.也许你应该仔细看看你的例子:问题是这些变量的来源。它们当然不应该是一些全局变量。相反,你应该使用一些容器(一个对象或一个数组)来保存用于渲染模板的数据。
总的来说,所有这些都指向广泛传播且经过充分验证的MVC方法:它确实严格地将逻辑和可视化分开。逻辑主要在控制器和模型(MVC中的C和M)中完成,而可视化在视图(模板)(MVC中的V)中完成。
答案 1 :(得分:1)
不要将其视为“将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>
这是将数据库交互和业务逻辑置于用户界面的中间,您希望避免这种情况。
不要过分关注分离技术,专注于分离问题。技术经常在各个问题上重叠,但问题不应相互重叠。