用 include 和 require 把你的网站拆分成可复用的文件,搭配清晰的项目结构和集中管理的常量。
在 Kodokon 中打开本课一旦你的网站超过两个页面,把页头、页脚和各个函数复制到每个文件里就会变得难以管理。PHP 提供了四种包含语句:include、require,以及它们的 include_once / require_once 变体。它们都会在调用处插入某个文件的内容;区别在于错误处理和重复包含。_once 变体会记录已经加载过的文件并只包含它们一次 - 这对于不能被重复声明的函数文件来说至关重要。
<?php
declare(strict_types=1);
function e(string $value): string
{
return htmlspecialchars($value, ENT_QUOTES);
}
function formatPrice(float $amount): string
{
return number_format($amount, 2, '.', ',') . ' €';
}清晰的项目结构胜过千行注释。一种常见的约定:public/ 存放提供给浏览器的页面(它是唯一对外暴露的文件夹),src/ 汇集配置和函数,templates/ 包含页面片段(header.php、footer.php)。PHP 内置的开发服务器通过把它指向 public/ 来启动。
mkdir -p my-site/public my-site/src
mkdir -p my-site/templates
cd my-site
php -S localhost:8000 -t public项目中固定不变的值(网站名称、路径、各种设置)值得用常量而不是变量来保存:它们不会被意外覆盖。const 在编译期被解析,define() 在运行期被解析;在实践中,在你的配置文件里优先使用 const。对于路径,始终用 __DIR__ 作为前缀,也就是当前文件所在的文件夹:这样无论脚本从哪里启动,你的包含都能正常工作。
<?php
declare(strict_types=1);
const SITE_NAME = 'La Bonne Pizza';
const ITEMS_PER_PAGE = 12;
const UPLOAD_DIR = __DIR__ . '/../public/uploads';
define('BASE_URL', 'http://localhost:8000');这样一来,每个页面都变成了一段简短的组装:先用 require 加载配置和函数,然后在具体内容的前后包含模板。
<?php
require __DIR__ . '/../src/config.php';
require_once __DIR__ . '/../src/functions.php';
$pageTitle = SITE_NAME . ' - Home';
include __DIR__ . '/../templates/header.php';
?>
<main>
<h1><?= e($pageTitle) ?></h1>
<p>Pizza of the day: <?= formatPrice(9.5) ?></p>
</main>
<?php include __DIR__ . '/../templates/footer.php'; ?>