fiberphp-ext / view
🖼️ FiberPHP 视图引擎 —— 原生 PHP 模板,支持布局继承、区块管理、模板包含、HTML 转义。
dev-master
2026-08-23 06:14 UTC
Requires
- php: >=8.3
- fiberphp/framework: dev-master
Requires (Dev)
- phpunit/phpunit: ^11.0
This package is auto-updated.
Last update: 2026-08-23 06:15:03 UTC
README
FiberPHP 扩展包:原生 PHP 模板引擎,支持布局继承、区块管理、模板包含。
目录结构
src/
├── Install.php # 安装器(发布配置文件)
├── View.php # 视图管理器(静态入口 + 单例引擎)
├── ViewProvider.php # 服务提供者
├── helpers.php # 助手函数 view()
├── Engine/
│ ├── EngineInterface.php # 模板引擎接口
│ └── PhpEngine.php # 原生 PHP 引擎核心
└── Concern/
├── ManagesLayouts.php # 布局管理 trait
└── ManagesSections.php # 区块管理 trait
config/
└── view.php # 配置文件
安装
composer require fiberphp-ext/view
安装后自动发布 config/view.php 配置文件。
配置
config/view.php:
return [
'engine' => 'php', // 模板引擎
'paths' => [base_path('resource/views')], // 模板搜索路径(可多个)
'cache' => runtime_path('views'), // 编译缓存目录
'layout' => 'layouts.app', // 默认布局
];
快速开始
基础渲染
use FiberPHPExt\View\View;
// 渲染模板并返回 HTML 字符串
$html = View::render('home.index', ['title' => 'Hello']);
// 渲染模板并返回 HTTP 响应(需 fiberphp/http)
return View::response('home.index', ['title' => 'Hello']);
助手函数
// 全局函数
$html = view('home.index', ['title' => 'Hello']);
模板语法
模板文件为原生 PHP,通过 $this 访问引擎方法。
变量输出
<h1><?= $title ?></h1>
<p>Hello, <?= $name ?></p>
HTML 转义
<?= $this->escape($userInput) ?>
布局继承
页面模板 page.php:
<?php $this->layout('layout'); ?>
<?php $this->section('title'); ?>页面标题<?php $this->end(); ?>
<div class="content">
<p>页面内容</p>
</div>
布局模板 layout.php:
<!DOCTYPE html>
<html>
<head>
<title><?= $this->yield('title', '默认标题') ?></title>
</head>
<body>
<?= $this->yield('content') ?>
</body>
</html>
模板包含
<div class="sidebar">
<?= $this->include('partials.menu', ['items' => $menu]) ?>
</div>
区块管理
<?php $this->section('sidebar'); ?>
<li>菜单项1</li>
<li>菜单项2</li>
<?php $this->end(); ?>
<?php $this->push('scripts', '<script src="app.js"></script>'); ?>
<?php $this->prepend('sidebar', '<li>首页</li>'); ?>
在布局中输出区块:
<?= $this->yield('sidebar') ?>
<?= $this->yield('scripts') ?>
API
View 静态方法
| 方法 | 说明 |
|---|---|
View::render($template, $data) | 渲染模板,返回 HTML 字符串 |
View::response($template, $data, $status) | 渲染模板,返回 HTTP 响应 |
View::engine() | 获取引擎实例(单例) |
View::setEngine($engine) | 注入自定义引擎 |
PhpEngine 方法
| 方法 | 说明 |
|---|---|
layout($template) | 设置布局模板 |
section($name) | 开始区块捕获 |
end() | 结束区块捕获 |
yield($name, $default) | 输出区块内容 |
push($name, $content) | 追加内容到区块 |
prepend($name, $content) | 前置内容到区块 |
include($template, $data) | 包含子模板 |
escape($value) | HTML 转义 |
测试
composer install
./vendor/bin/phpunit
License
MIT