PHP 中 HTML 头的最佳实践

2022-08-31 00:54:05

我目前有一个非常简单的页面,有一些更复杂的后端。我一直以同样的方式这样做,但我觉得这是不对的。但我还没有想出太多对我有用的东西。

我有我的索引.php,标头.php和函数.php。index.php包括 header.php,它从 function.php 调用函数。我不确定的主要事情是如何使网站足够动态,以便它可以拥有易于编辑的页面,但也易于编辑,这是它需要编辑的很大一部分。
索引.php

<?php
session_start();
include_once 'header.php';
?>
// Page content
</body>
</html>

页眉.php

<!DOCTYPE HTML>
<html lan="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<?php
require_once 'functions.php';
getBar(); // Top of page bar with menu/login etc
?>

我不认为显示函数.php会增加那么多。我知道我不应该在我的文件中使用2 s,所以如果我想在每个页面上都有一个描述,我该怎么办?我以前设置过这样的文件:索引.php<head>

<?php
session_start();
include_once 'header.php';
?>
// extra page specific stuff here, such as description or JS
</head>
<body>
<?php
require_once 'functions.php';
getBar(); // Top of page bar with menu/login etc
?>
// Page content here
</body>
</html>

页眉.php

<!DOCTYPE HTML>
<html lan="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" />

但是,我认为文件是“碎片化的”。我不知道是否有普遍接受的方法可以做到这一点,但如果有的话,我很想听听!


答案 1

我认为您正在寻找模板。

虽然你差点就搞定了,但你把事情混得有点乱。只需将“设计部件”与“代码部件”分开即可。不要让头文件来完成实际代码的工作,一切都变得像淡水一样清晰

让我建议您进行以下设置:
站点包含

  • 主配置文件(假设它类似于您的函数.php)
  • 主网站模板
  • 实际页面(或部分) - 不同用途的实际php脚本。每个部分由2部分组成:
    • 脚本本身,执行所有数据挖掘和准备,初始化所有变量
    • 一个模板,仅执行数据输出的工作。

主要思想是使PHP脚本在所有数据准备就绪之前不输出 - 因此您将获得页面标题问题的即时解决方案。此外(想想看):

  • 您将能够发送任何HTTP标头,Cookie,启动会话等。
  • 您还可以动态更改整个输出外观:例如XML或JSON而不是HTML
  • 您将能够为不同的站点使用相同的代码库,仅更改模板

一旦php脚本完成了数据准备,它就会调用主站点timplate,而主站点timplate又将包括实际的页面模板。

因此,您将获得您所要求的 - 网站足够动态,可以拥有易于编辑的页面,但也易于编辑是它需要编辑的很大一部分 - 以及许多其他好处。

我所说的模板是一个典型的PHP脚本,但是,主要由纯HTML组成,一些PHP代码仅用于显示动态生成的数据。

在这里,您可以使用一些基本但有效的示例

页面:

<?
//include our settings, connect to database etc.
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
//getting required data
$DATA=dbgetarr("SELECT * FROM links");
// setting title for using in the main template
$pagetitle = "Links to friend sites";
//etc
//set page template filename
$tpl = "links.tpl.php";
//and then finally call a template:
include "main.tpl.php";
?>

其中是您的主网站模板,包括常见部分,如页眉,页脚,菜单等:main.tpl.php

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My site. <?=$pagetitle?></title>
</head>
<body>
<div id="page">
<? include $tpl ?>
</div>
</body>
</html>

并且是实际的页面模板:links.tpl.php

<h2><?=$pagetitle?></h2>
<ul>
<? foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<? endforeach ?>
<ul>

答案 2

我认为大多数有经验的程序员会告诉你尽可能少地混合你的代码和HTML。这意味着执行所有计算,然后简单地将视图所需的任何变量传递给视图。

他们还会告诉您查看MVC设计模式。在 PHP 中,控制器类在这里接受初始请求,对正确的业务模型类执行正确的操作,然后将所需的数据传递给 View 类,这将呈现您的 HTML。

MVC可以从非常简单的3类变体,到极其复杂的“框架”,如Zend框架。如果你构建自己的,看看PHP类自动加载,因为它会让你的生活更轻松。


推荐