jascha030/twig-service

简单的twig服务接口和类,我乐于在开发过程中将其围绕Environment对象。

1.2.0 2023-01-15 21:26 UTC

This package is auto-updated.

Last update: 2024-09-09 20:44:50 UTC


README

一组简单的接口和类的基本实现,用于与Twig一起使用。

入门指南

需求

  • PHP ^8
  • Composer * (但推荐 2.2 或更高版本)

安装

composer require jascha030/twig-service

使用

该包内容包含一个实现接口的简单服务类,该接口扩展了一个额外接口,该接口实现了一些与twig/twig无关的功能。

TwigServiceInterface

主要接口是Jascha030\Twig\TwigServiceInterface,它要求一个类实现三个方法。

方法

getEnvironment

获取TwigEnvironment。

TwigServiceInterface::getEnvironment(): \Twig\Environment

  • 返回\Twig\Environment实例。

继承方法

以下方法是从Jascha030\Twig\Templater\TemplaterInterface继承的。

这样做是为了为将来替换您的Twig特定实现提供另一种模板方法的可能性,而无需重构代码库,例如,通过使用DIC。

因此,建议使用绑定到TemplaterInterface的容器绑定,而不是TwigServiceInterface。出于相同的原因,建议其他类依赖于TemplaterInterface。对于依赖类,使用Twig\Environment实例渲染输出的事实不应相关。

renderString

渲染模板并返回输出字符串。

TemplaterInterface::renderString(string $template, array $context = []): string

  • 参数
    • $template (string): twig模板名称。
    • $context (array): 键 => 对应模板变量的值。
  • 返回渲染的模板作为string

render

渲染并输出模板。

TemplaterInterface::render(string $template, array $context = []): void

  • 参数
    • $template (string): twig模板名称。
    • $context (array): 键 => 对应模板变量的值。
  • 返回void(预期输出将被回显)。

默认实现

此包还提供了一个类,作为TwigServiceInterface的最基本实现,即Jascha030\Twig\TwigService.php。此类通过添加需要Twig\Environment的构造函数实现了所有三个方法。

以下是一个使用FilesystemLoader构建服务的简单示例

<?php

use Twig\Loader\FilesystemLoader;
use Twig\Environment;
use Jascha030\Twig\TwigService;

/**
 * Include Composer's autoloader.
 */
include __DIR__ . '/vendor/autoload.php';

$dir = __DIR__ . '/path/to/your/twig/template/folder';
$environment = new Environment(new FilesystemLoader($dir));
$service = new TwigService($environment);

开发

克隆此存储库,并在存储库内部运行composer install

代码风格

代码风格以.php-cs-fixer.dist.phpphp-cs-fixer配置的形式提供。为了方便执行,使用提供的Composer脚本命令

composer run format

如果您全局安装了php-cs-fixer,请将其传递给fix命令的--config参数。

php-cs-fixer fix --config=.php-cs-fixer.dist.php

单元测试

phpunit.xml中提供了一个phpunit的配置。

为了方便执行,使用提供的Composer脚本命令

composer run phpunit

如果您全局安装了phpunit,并想使用它,请通过--config参数传递配置。

phpunit --config phpunit.xml

动机

我个人的偏好是包装\Twig\Environment类到一个服务类中,我反复编写,而它是一个非常简单的类。

所以(终于)我将其添加到一个简单的包中,包括单元测试。

许可证

本作曲家包是一个开源软件,许可协议为MIT 许可协议

注意:为了找到适合您项目的正确许可协议,请访问 GitHub 的https://choosealicense.com/,或阅读有关在 GitHub 上为您的项目许可文档页面上的任何其他信息。