lorenzosanzari / mozaiku
简单的 PHP 模板继承类
Requires
- php: >=5.6.0
This package is auto-updated.
Last update: 2024-09-19 09:21:20 UTC
README
Mozaiku
简单的 PHP 模板继承
受多个层次模板引擎(如 Twig 或 Blade)的启发,Mozaiku 允许您使用简单的 纯 PHP 语言构建层次模板。它是一个非常简单且轻量级的类,具有非常小的内存占用。
许可证
Mozaiku 在 MIT 许可证下发布。
通过 Composer 安装
如果您正在使用 Composer,您可以运行以下命令
composer require lorenzosanzari/mozaiku
或者您可以直接从 Github 下载 zip 文件,并将其解压缩到您的网页目录中。
模板继承
什么是模板继承?模板继承是制作和组合可重用 HTML 布局的优雅方式。它比传统的“包含”(不良)做法(如包含头部和尾部文件)更强大。
使用 Mozaiku,您可以使用纯 PHP 语言简单地实现模板继承。无需学习另一种模板语言。
有一个主模板,您可以概念化地定义一个“子”视图,它扩展主布局。这意味着它将具有与布局相同的总体外观,但将用其自己的内容重新定义一些部分。换句话说,在子视图中,您只需重新定义与主题相关的部分(部分覆盖)即可,整个页面将继承“父”主题的所有其他内容。
部分
在一个布局中,您可以通过编写以下内容来定义一个新的部分
<?php $this->section('menu'); ?> Menu section content ... <?php $this->endsection(); ?>
部分也可以嵌套,以便更详细地管理要覆盖的内容。在同一个布局中,不能定义多个具有相同名称的部分。
父部分内容
在一个部分中,您不仅可以插入新的内容,还可以通过以下指令调用父布局中相同部分的同名内容
<?php $this->section('title'); ?> Child title content <?php $this->parentContent(); //parent 'title' section content ?> <?php $this->endsection(); ?>
扩展父布局
示例
<!-- theme.php --> <!DOCTYPE html> <html> <head> <title>Mozaiku example theme</title> </head> <body> <?php $this->section('title'); ?> Theme title content <?php $this->endsection() ?> <div id='article'> <?php $this->section('article') ?> This is the content of theme article body. <?php $this->endsection() ?> </div> </body> </html> <!-- page.php --> <?php $this->extendsView('views/theme.php'); ?> <?php $this->section('article') ?> This is a modified article body overridden by page.php. <?php $this->endsection() ?>
警告:必须在子页面的开始处放置 $this->extendsView('my_parent_view.php') 指令!
使用 Mozaiku 渲染 'page.php',您将获得以下输出
<!DOCTYPE html> <html> <head> <title>Mozaiku example theme</title> </head> <body> Theme title content <div id='article'> This is a modified article body overridden by page.php. </div> </body> </html>
如果您在模板中只想显示由子视图填充的部分内容的显示,您可以简单地编写
<?php $this->showsection('my_section'); ?>
在布局中包含部分视图
您可以在布局的某个部分(或任何点,如果您的视图不是子视图)中包含一些部分视图,只需编写
<?php $this->includeView('views/my_partial.php', $data); ?>
渲染或捕获输出
render() 函数
$mozaiku = new Mozaiku(); $data = [ //view data array... ]; $output = $mozaiku->render('page.php', $data, $return);
允许您显示最终输出,并将内容捕获到变量(字符串)中。如果第三个参数(例如 $return)等于 true,则 $output 将包含从处理过的视图输出的所有内容。
内容堆栈
Mozaiku 允许您将内容推送到命名堆栈,您可以在布局的某个点渲染它们。这对于注入 JavaScript 或 CSS 标签或子视图所需的脚本非常有用。
<!-- Stack use example --> <?php $this->push('head'); ?> <style> body {font-size: 1.3em;color: #999;font-family: "Trebuchet MS",Verdana,Arial,sans-serif;} body a {color: #595 !important;} #title {font-size: 36px;} #menu {text-align: right; width: 100%;} #article, #footer {margin-top: 35px; border: 1px solid #aaa;padding: 15px 25px 15px 25px;} #title, #footer {text-align: center;width: 100%;} </style> <?php $this->endpush(); ?>
渲染堆栈:在您的 HTML 布局中
<?php $this->stack('head'); ?>
调试和严格模式
您可以使用 Mozaiku 的调试模式来显示与部分覆盖内部堆栈状态相关的调试信息。
$mozaiku = new Mozaiku(); $mozaiku->debug = true; //debug mode
严格模式将向您提供有关在视图中编写内容的最佳方式的错误消息。
$mozaiku->strict_mode = true; //strict mode
有关任何进一步的疑问,请参阅项目中包含的示例文件。:-)