繁体   English   中英

如何在PHP中注册树枝扩展

[英]How to register a twig extension in PHP

我目前正在使用独立的twig(不适用于交响乐或作曲家),并且在文档中找不到有关如何在php中注册扩展的信息。

我的index.php文件看起来像这样

<?php
include 'exts/ext.php';
require_once 'Twig/Autoloader.php';
Twig_Autoloader::register();

$loader = new Twig_Loader_Filesystem('views');
$twig = new Twig_Environment($loader);
$twig->addExtension(new Test_Twig_Extension())
echo $twig->render('index.twig');
?>

我的扩展类看起来像这样(ext.php)

<?php
//require_once 'Twig/Extension.php';
//require_once 'Twig/ExtensionInterface.php';
class Test_Twig_Extension extends Twig_Extension {

public function getFunctions() {
    return array(
        new Twig_SimpleFunction('my_function', array($this,'my_function'))
    );
}

public function my_function($arg1, $arg2) {
    echo "Arg1: {$arg1} and Arg2: {$arg2}";
}

public function getName(){
    return 'my_function';
}

}
?>

我收到以下错误:

致命错误:在第12行的C:\\ xampp \\ htdocs \\ Twig \\ Extension.php中找不到接口'Twig_ExtensionInterface'

我发现使用yaml设置文章的色调,但是我没有使用yaml。

我确定我没有正确注册,或者没有正确设置。

所以我发现的是以下内容:

  1. 自动加载时,您不需要/不包含类文件

  2. 您的扩展名应该以Twig_Extension_开头 (例如,我不得不将我的名字重命名为Twig_Extension_Test而不是Test_Twig_Extension,就像文档显示的那样)

  3. 确保您的Twig_Extension_Test类具有getName方法。

  4. 将扩展文件命名为类名的最后一部分。 因此,我必须将其称为Test.php。 我相信这也是区分大小写的。

  5. 将此文件放入Twig / Extension /文件夹中

  6. 调用$ twig-> addExtension(new Twig_Extension_Text());

我已经在问题中更新了代码以反映这些步骤

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM