daivecesarano/embryo-view

PSR响应中渲染PHP视图的PHP渲染器。

1.0.3 2021-04-27 08:08 UTC

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对象,设置viewscompilers目录,创建一个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的循环结构(如forforeachwhile

@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