chh/meta-template

具有多种引擎适配器的模板解决方案。

v1.0.0beta1 2013-05-02 13:14 UTC

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方法接受两个参数,这两个参数都是可选的

  1. $context:模板的上下文,在大多数引擎中,这是模板脚本中$this所引用的内容。
  2. $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属性中。

查看提供的模板引擎,如果需要一些示例。