PHP和HTML在同一个文件中,还是在单独的文件中?

时间:2019-02-06 07:10:15

标签: php html file

我一直在网上阅读,将HTML和PHP放在同一文件中不是一个好主意。为什么会这样呢?如果是这样,为什么以及如何精确分离文件?

3 个答案:

答案 0 :(得分:1)

分离HTML和PHP代码的最佳方法是使用MVC设计模式,MVC体系结构在Model ViewController中应用了分离代码的方法。

  

MVC是通常用于开发用户界面的体系结构模式   将应用程序分为三个相互关联的部分。这样做是为了   将信息的内部表示与信息的处理方式分开   向用户展示并接受。 MVC设计模式将这些因素解耦   主要组件可实现有效的代码重用和并行开发。

     
    

来源:Wikipedia

  

基本上,所有有关数据库的代码都在模型中,视图在视图中,控制器中的代码行为。

在视图中,您只需要数据并将其显示在视图中,以及一些if语句。

很多PHP框架使用CodeigniterLaravelSymfony等MVC设计模式。他们使用模板视图来呈现视图。

答案 1 :(得分:1)

根据您的问题,

有关设计的全部内容:好的设计可以为您提供可维护的代码,并且可以减少应用程序中发生错误的可能性。 用spagetti编码文件练习PHP是可以的,但是当您需要编写现实生活中的应用程序时,应该考虑使用MVC framework(例如codeIgniterlaravel),这样您就可以轻松获得您的应用程序处于良好状态。

答案 2 :(得分:0)

要回答您的问题,一种流行的方法是使用输出缓冲和模板化。

例如,如果您在MVC框架的控制器中,则可以使用函数来选择模板并传递模板数据。

您将在控制器中收到一个请求。有人想访问联系页面。您将进行所需的任何检查(例如查看他们是否提交了表单,验证数据等),然后选择模板并向其传递任何必要的数据

// Controller
contact($request) {
    if (empty($_POST)) {
        inc('contact-form', ['title' => 'Contact Page'])
    } else {
        inc('contact-thank-you', ['title' => 'Thanks for submitting!']);
    }
}

您将使用以下功能,从预设目录中选择模板,然后提取变量。这使它们可用于您的模板(不要提取$ _GET或$ _POST)

// Function to load template and output it
// Select a path and any variables
function inc($path, $variables, $print = true) {
    $output = NULL;
    $full_path = __DIR__ . "/views/{$path}.php";

    if (file_exists($full_path)) {
        // Extract variables
        extract($variables);

        // Output Buffer
        ob_start();

        // Include
        include $full_path;

        $output = ob_get_clean();
    }

    if ($print) {
        print $output;
    }

    return $output;
}

// Inside templates/about.php
<main>
    <header>
        <h1>
            <?= $title ?>
        </h1>
    </header>
</main>