本文目录导读:

在PHP项目中,视图层的模板渲染方式取决于你使用的框架,以下是主流PHP框架的视图层渲染方式:
Laravel(Blade模板引擎)
// 控制器中
public function index()
{
$users = User::all();
return view('users.index', [
'users' => $users,
'title' => '用户列表'
]);
}
// Blade模板 (resources/views/users/index.blade.php)
@extends('layouts.app')
@section('content')
<h1>{{ $title }}</h1>
@foreach($users as $user)
<div>{{ $user->name }} - {{ $user->email }}</div>
@endforeach
@endsection
ThinkPHP(内置模板引擎)
// 控制器中
public function index()
{
$users = User::select();
$this->assign('users', $users);
$this->assign('title', '用户列表');
return $this->fetch('index');
}
// 模板文件 (application/index/view/index/index.html)
<!DOCTYPE html>
<html>
<head>{$title}</title>
</head>
<body>
<volist name="users" id="user">
<div>{$user.name} - {$user.email}</div>
</volist>
</body>
</html>
Symfony(Twig模板引擎)
// 控制器中
public function index(): Response
{
$users = $this->getDoctrine()->getRepository(User::class)->findAll();
return $this->render('user/index.html.twig', [
'users' => $users,
'title' => '用户列表'
]);
}
// Twig模板 (templates/user/index.html.twig)
{% extends 'base.html.twig' %}
{% block body %}
<h1>{{ title }}</h1>
{% for user in users %}
<div>{{ user.name }} - {{ user.email }}</div>
{% endfor %}
{% endblock %}
Yii2(内置模板引擎)
// 控制器中
public function actionIndex()
{
$users = User::find()->all();
return $this->render('index', [
'users' => $users,
'title' => '用户列表'
]);
}
// 模板文件 (views/user/index.php)
<?php
use yii\helpers\Html;
?>
<h1><?= Html::encode($title) ?></h1>
<?php foreach($users as $user): ?>
<div><?= Html::encode($user->name) ?> - <?= Html::encode($user->email) ?></div>
<?php endforeach; ?>
原生PHP渲染
// 视图函数
function render($template, $data = [])
{
extract($data);
ob_start();
include "views/{$template}.php";
return ob_get_clean();
}
// 控制器
$data = [
'users' => $users, => '用户列表'
];
echo render('users/index', $data);
// 模板文件 (views/users/index.php)
<h1><?php echo htmlspecialchars($title); ?></h1>
<?php foreach($users as $user): ?>
<div><?php echo htmlspecialchars($user['name']) . ' - ' . htmlspecialchars($user['email']); ?></div>
<?php endforeach; ?>
通用渲染流程
无论使用哪个框架,模板渲染的基本流程都是:
- 数据准备:控制器获取数据
- 数据传递:将数据传递给模板
- 模板解析:执行模板引擎,解析变量和标签
- 输出:生成最终的HTML字符串发送给客户端
选择合适的框架
- Laravel:功能最完整,学习曲线平稳
- ThinkPHP:中文文档完善,适合国内项目
- Symfony:企业级应用推荐
- Yii2:性能优秀,适合大型项目
- 原生PHP:轻量级,适合简单项目
选择哪个框架取决于项目需求、团队技能和学习资源。