Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP与连接HTML的良好编程实践_Php_Html - Fatal编程技术网

PHP与连接HTML的良好编程实践

PHP与连接HTML的良好编程实践,php,html,Php,Html,我正在尝试将PHP与HTML连接起来,我想知道它的最佳实践是什么。到目前为止,我是这样处理的:--编辑以显示完整的脚本-- 不同的人可能会对“最佳实践”有不同的描述。我将使用代码格式标准,其中包括重要的一点: 文件应声明符号(类、函数、常量等)或引起副作用(例如生成输出、更改.ini设置等),但不应同时声明这两个符号 我还建议您的php代码不要直接打印任何HTML,而是使用模板。我是模板引擎的忠实粉丝,现在有很多。人们也会说“php本身就是一个模板引擎”,如果你愿意的话,你可以使用它。尽可

我正在尝试将PHP与HTML连接起来,我想知道它的最佳实践是什么。到目前为止,我是这样处理的:--编辑以显示完整的脚本--



不同的人可能会对“最佳实践”有不同的描述。我将使用代码格式标准,其中包括重要的一点:

  • 文件应声明符号(类、函数、常量等)或引起副作用(例如生成输出、更改.ini设置等),但不应同时声明这两个符号
我还建议您的php代码不要直接打印任何HTML,而是使用模板。我是模板引擎的忠实粉丝,现在有很多。人们也会说“php本身就是一个模板引擎”,如果你愿意的话,你可以使用它。尽可能多地保留模板(显示)中的逻辑


与团队一起提前确定自己的标准,并坚持执行。关于
echo
?>
是否更好,可能存在意见分歧,但一旦您做出决定,请保持一致。保持缩进一致也很重要。如果您这样做,您可能会找到丢失的大括号,使您的
elseif
不正确。

就像前面解释的Batmagkapa一样,执行逻辑/内容生成和查看是两个不同的任务。现代web应用程序的复杂性通常要求这种方法保持代码可读性和可理解性,并且可能是可重用的

这大概就是为什么MVC模式(模型/视图/控制器)和模板系统是当今大多数框架的组件的原因

当然,不可能给出一个解决方案,因为它取决于个人偏好和需求——这使得这个问题具有争议性,过于本地化,不适合问答式

但是,当遵循规则不混合逻辑和内容时,您很可能会这样做(基本aproach):

no\u internet\u form.php

<?php
if(isset($_POST['submit']) && $_POST['no_internet'])
{
    //echo "<h2>Response</h2><br />";
    $Version = $_POST["isVersion"];
    $no_internet = $_POST["no_internet"];
    $script_result = execute_the_incredibly long_script($Version, $no_internet);
}

// more business logic ...

include 'views/no_internet_form.html.php';
?>
<?php if(isset($script_result)): ?>
<div class="ResponseBox" style="background-position: 0 0;">
    <div class="ResponseText">
        <?php echo $script_result; ?>
    </div>
</div>
<?php endif; //isset($script_result) ?>

顺便说一句:我怀疑您提供的代码的哪一部分实际上属于
if
块,因为这对我来说并不明显。您的示例的HTML代码在某种程度上没有多大意义


这可能只是为了演示,但我花了几秒钟的时间才真正理解你例子的含义。这应该更具可读性,尤其是在大型项目中。

像这样的方法既干净又整洁,我想说保持原样在我看来,永远不要
echo
HTML。在模板文件中,您应该主要使用HTML,并在正确的位置打印一些PHP变量。PHP是一种模板语言,所有控制结构都有一个模板版本(
if():…endif;
),如果服务器上打开了PHP块,您甚至可以使用速记块(如
来打印
$x
)的值。顺便说一句,我投了反对票,这个问题太广泛了,会引起争论。在这里,我认为PHP是一种服务器端语言,有很多可用的模板引擎,而且速记标记即将被弃用?如果你不想最终导致意式代码混乱,将PHP逻辑与HTML混合不是一个好的做法。您应该在HTML中使用PHP来打印动态值和控制结构:。@adeneo-Hm,我不知道。5.4
@爆炸药丸中的AFAIK谢谢您的代码编辑。到现在为止,我已经太习惯使用细枝模板引擎了。一旦普通的PHP“模板”不再适合人们的需要,它绝对值得一看。@好的,我会发布原始的。我已经用完整的脚本编辑了原始帖子。你能理解为什么我不能使用elseif语句,因为它总是说这是意外的。@DaveMelia如果
if
块的end if和
elseif
标记之间可能没有语句。关闭和打开PHP标记作为这样的“语句”计算,是不允许的。
<?php if(isset($script_result)): ?>
<div class="ResponseBox" style="background-position: 0 0;">
    <div class="ResponseText">
        <?php echo $script_result; ?>
    </div>
</div>
<?php endif; //isset($script_result) ?>