🖼️ FiberPHP 视图引擎 —— 原生 PHP 模板,支持布局继承、区块管理、模板包含、HTML 转义。

Maintainers

Package info

gitee.com/fiberphp-ext/view

Issues

pkg:composer/fiberphp-ext/view

Transparency log

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

dev-master 2026-08-23 06:14 UTC

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