chh / meta-template
具有多种引擎适配器的模板解决方案。
Requires
- php: >=5.3.6
- chh/fileutils: 1.0.*@dev
- symfony/process: ~2.1
Requires (Dev)
- chh/bob: 1.0.*@dev
- dflydev/markdown: ~1.0
- jsonbuilder/jsonbuilder: *@dev
- phly/mustache: ~1.0
- phpunit/phpunit: ~3.7
- richthegeek/phpsass: *@dev
- twig/twig: ~1.0
Suggests
- dflydev/markdown: Enable .md, .markdown support
- jsonbuilder/jsonbuilder: Enable .jsonbuilder support
- phly/mustache: Enable .mustache support
- richthegeek/phpsass: Enable .sass, .scss support
- twig/twig: Enable .twig support
This package is not auto-updated.
Last update: 2024-09-14 11:54:53 UTC
README
一个提供不同PHP模板引擎适配器的库
安装
MetaTemplate遵循PSR-0标准进行类加载,因此其类可以用任何兼容的自动加载器加载,例如Zend_Loader
或Symfony Classloader。
安装很简单,只需将MetaTemplate
命名空间注册到您的自动加载器中,并将其指向您将lib
目录内容复制到的目录。
基本用法
大多数时候,您将通过Template
类使用引擎。它提供了一些方法,这些方法接受一个文件名并返回一个模板实例。
MetaTemplate默认提供以下适配器/引擎
PHPTemplate
,映射到.php
和.phtml
PhpSass
,映射到.sass
和.scss
MarkdownTemplate
(需要加载php-markdown),映射到.md
和.markdown
LessTemplate
(需要通过node安装Less),映射到.less
(需要Symfony_Process 2)MustacheTemplate
(需要phly_mustache),映射到.mustache
MetaTemplate\Template
类有一个静态的create
方法,可以从给定的路径创建模板实例。
例如
<?php
use MetaTemplate\Template;
$template = Template::create('/path/to/foo.phtml');
echo get_class($template);
// => "\MetaTemplate\Template\PHPTemplate"
所有模板都实现了\MetaTemplate\Template\TemplateInterface
,它提供了一个render
方法,它返回渲染后的内容。
render
方法接受两个参数,这两个参数都是可选的
$context
:模板的上下文,在大多数引擎中,这是模板脚本中$this
所引用的内容。$locals
:一个数组,它定义了模板脚本中可用的局部变量。
这两个参数允许将数据注入到模板脚本中。
如果模板引擎不需要支持上下文或局部变量,则这两个参数将被简单地忽略。这是Markdown和Less引擎的情况。
深入一层
如果您想自己设置所有引擎映射并且没有默认的引擎设置,那么MetaTemplate\Util\EngineRegistry
就是您想要的。
这个类简单地提供了MetaTemplate\Template
类静态方法的实例。
要将模板类映射到一个或多个文件扩展名,只需像在Template
类上一样调用register
方法。
$registry = new \MetaTemplate\Util\EngineRegistry;
$registry->register('\\MetaTemplate\\Template\\LessTemplate', 'less');
然后,您可以使用create
方法为提供的路径创建新的模板实例。
编写自己的引擎
如前所述,所有模板引擎都需要实现MetaTemplate\Template\TemplateInterface
。尽管有MetaTemplate\Template\Base
类可以继承,它处理一些冗余方面,例如模板数据加载。
Base
类定义了一个prepare
方法,它允许您在模板初始化时进行挂钩。此方法在构造函数返回之前调用。
您的模板内容被加载到$data
属性中。
查看提供的模板引擎,如果需要一些示例。