germania-kg / twigserviceprovider
Pimple 服务提供者,用于 Twig 模板引擎
Requires
- php: ^7.3|^8.0
- pimple/pimple: ^3.0
- twig/twig: ^2.0|^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- php-coveralls/php-coveralls: ^2.0
- phpspec/prophecy-phpunit: ^2.0
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^9.0
- spatie/phpunit-watcher: ^1.0
This package is auto-updated.
Last update: 2024-09-16 12:07:06 UTC
README
Pimple 服务提供者,用于 Twig 模板引擎
使用 Composer 安装
$ composer require germania-kg/twigserviceprovider
或者,直接将此包添加到您的 composer.json 中:
"require": { "germania-kg/twigserviceprovider": "^1.0|^2.0" }
v2 版本需要 PHP 7.3+ 和从 v2 版本开始使用的 Twig。
设置
请准备好您的 Pimple 依赖容器,并注册 TwigServiceProvider:
<?php use Germania\TwigServiceProvider\TwigServiceProvider; use Pimple\Container; $pimple = new Container; $pimple->register( new TwigServiceProvider );
使用
注册 TwigServiceProvider 后,您可以像这样获取并使用您的 Twig_Environment:
<?php $twig_environment = $pimple['Twig']; echo $twig_environment->render('template', [ 'foo' => 'bar']);
从本包的 v2 版本开始,配合 Twig v2 及以上版本,这也同样可行
$twig_environment = $pimple[ \Twig\Environment::class ];
……还有更多服务,请参阅 服务部分
配置
默认选项
<?php $options = array( // For Twig's Filesystem Loader (string or array) 'templates' => '/path/to/templates', // The most important Twig Environment options 'debug' => false, 'cache' => '/path/to/cache', 'auto_reload' => true, 'autoescape' => false, 'strict_variables' => false );
您可以通过将您想覆盖的选项传递给构造函数或运行时扩展 Twig.Config
服务来细化这些选项
实例化时覆盖
<?php use Germania\TwigServiceProvider\TwigServiceProvider; $custom_options = [ 'templates' => [ '/another/path/to/templates', __DIR__ . '/vendor/foo/bar/templates' ], 'strict_variables' => true ]; $pimple->register( new TwigServiceProvider( $custom_options ));
运行时覆盖
<?php $pimple->register( new TwigServiceProvider ); $pimple->extend('Twig.Config', function( $defaults, $pimple) { return array_merge( $defaults, [ 'templates' => $pimple['custom.templates'], 'strict_variables' => getenv('STRICT_ONLY') ]); });
其他服务
Twig 选项
默认情况下,Twig_Environment 实例使用“最重要的”选项定义的配置构建——请参阅 配置部分。您还可以添加其他选项,例如:
// @return array $pimple->extend('Twig.Options', function($options, $pimple) { return array_merge($options, [ 'charset' => 'iso-8859-1', 'optimizations' => 0 ]); });
Twig.CachePath
// @return string $pimple->extend('Twig.CachePath', function($old, $pimple) { return __DIR__ . '/var/cache'; });
Twig.TemplatePaths
// @return array $pimple->extend('Twig.TemplatePaths', function($paths, $pimple) { return array_merge($paths, [ 'another/one', 'vendor/name/package/templates' ]); });
Twig.Loaders
此服务默认只包含 Twig_Loader_Filesystem 实例;要添加一个或多个其他加载器,请将它们添加到 $loaders
数组中
// @return array $pimple->extend('Twig.Loaders', function($loaders, $pimple) { return array_merge($loaders, [ new Twig_Loader_Array( [ ... ] ) ]); });
$loaders
中的所有加载器将通过 Twig 的 Twig_Loader_Chain. 自动链接
有关完整描述,请参阅 Twig 开发者文档
其他服务
所有这些服务返回一个(空)数组,您可以扩展它以包含自定义数据。它们都将添加到 Twig_Environment 中。
// @return array $pimple->extend( 'Twig.Globals', ... ); $pimple->extend( 'Twig.Filters', ... ); $pimple->extend( 'Twig.Tests', ... ); $pimple->extend( 'Twig.Functions', ... ); $pimple->extend( 'Twig.Extensions', ... );
开发
$ git clone https://github.com/GermaniaKG/TwigServiceProvider.git
$ cd TwigServiceProvider
$ composer install
单元测试
您可以将 phpunit.xml.dist
复制到 phpunit.xml
并根据您的需要进行调整,或者保持不变。运行 PhpUnit 测试或 composer 脚本,例如:
$ composer test # or $ vendor/bi