我目前正在使用twig standalone(不使用symphony或composer),并且没有在文档中找到如何在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';
}
}
?>
我收到以下错误:
致命错误: 界面&#39; Twig_ExtensionInterface&#39;找不到 第12行的C:\ xampp \ htdocs \ Twig \ Extension.php
我发现用yaml设置的文章的音调,但我没有使用yaml。
我确信我没有正确注册,或者没有正确设置。
答案 0 :(得分:1)
所以我想出的是以下内容:
自动加载时,您不需要/包含类文件
您的扩展程序的名称应以 Twig_Extension _ 开头(例如,我必须将我的名称重命名为Twig_Extension_Test,而不是像某些时间显示的文档那样重命名为Test_Twig_Extension)
确保您的Twig_Extension_Test类中包含getName方法。
将您的扩展文件命名为类名的最后一部分。因此我必须被称为Test.php。我相信这也是一个案例敏感。
将此文件放入Twig / Extension /文件夹
调用$ twig-&gt; addExtension(new Twig_Extension_Text());
我已更新问题中的代码以反映这些步骤