daivecesarano / embryo-view
PSR响应中渲染PHP视图的PHP渲染器。
1.0.3
2021-04-27 08:08 UTC
Requires
- php: >=7.1
- davidecesarano/embryo-emitter: dev-master
- davidecesarano/embryo-http: dev-master
- psr/http-server-middleware: ^1.0
Requires (Dev)
- phpstan/phpstan: ^0.12.51
This package is auto-updated.
Last update: 2024-09-27 16:33:04 UTC
README
PHP模板引擎和PSR-7响应的渲染器。
特性
- PSR兼容。
- 备选语法。
- 视图在修改前编译并缓存。
- PSR-15中间件用于压缩HTML。
要求
- PHP >= 7.1
- PSR-7 http消息实现和PSR-17 http工厂实现(例如Embryo-Http)
- PSR响应发射器(例如Embryo-Emitter)
安装
使用Composer
$ composer require davidecesarano/embryo-view
示例
创建Response
对象,设置views
和compilers
目录,创建一个View
对象。使用render()
方法通过响应、模板和数据渲染视图。最后,发出响应。
use Embryo\Http\Emitter\Emitter; use Embryo\Http\Factory\{ResponseFactory, StreamFactory}; use Embryo\View\View; $response = (new ResponseFactory)->createResponse(200); $templatePath = __DIR__.DIRECTORY_SEPARATOR.'views'; $compilerPath = __DIR__.DIRECTORY_SEPARATOR.'compilers'; $view = new View($templatePath, $compilerPath); $response = $view->render($response, 'page', ['message' => 'Hello World!', 'status' => 1]); $emitter = new Emitter; $emitter->emit($response);
用法
创建和渲染视图
如果您想创建一个包含部分文件的模板,您可以编写如下
<!-- header.php --> <html> <head> <title>{{ $title }}</title> </head> <body>
<!-- home.php --> @include('header', ['title' => $title]) <h1>{{ $title }}</h1> </body> </html>
在这个示例中,您可以使用@include(filename, data)
来包含header.php文件到home.php中,并传递数据给文件。Embryo View将编译文件,通过替换PHP代码中的替代语法。最后,您可以使用render显示页面。
$response = $view->render($response, 'home', ['title' => 'Hello World!']);
显示数据
您可以这样显示name变量的内容
{{ $name }} // echo htmlentites($name)
如果您想显示HTML内容,可以这样使用
{{{ $html }}} // echo $html
如果您使用VueJs mustache模板,可以这样使用
@{{ myVar }} // echo {{ myVar }}
if语句
您可以使用@if
、@elseif
、@else
和@endif
指令来构建if语句。
@if ($status == 1)
Status is 1
@elseif ($status == 2)
Status is 2
@else
Status is {{ $status }}
@endif
循环
Embryo View提供简单的指令来处理PHP的循环结构(如for
、foreach
和while
)
@for ($i = 0; $i < 10; $i++)
Value is {{ $i }}
@endfor
@foreach ($users as $user)
User id is {{ $user->id }}
@endforeach
@while ($user = $users)
User id is {{ $user->id }}
@endwhile
PHP
您可以使用@php
指令在模板中执行一块纯PHP代码。
@php
$a = 1;
echo $a;
@endphp