Имам проблем с правилното преминаване от компилатора по подразбиране към персонализиран компилатор. Изглежда, че може да не създавам класа или обекта правилно.
От http://twig.sensiolabs.org/doc/internals.html „По подразбиране компилаторът (Twig_Compiler) може да бъде променен чрез извикване на метода setCompiler(): $twig->setCompiler($compiler);"
Ето къде се опитвам да сменя компилатора:
\Twig_Autoloader::register();
$loader = new \Twig_Loader_Filesystem($templateDirectory);
$twig = new \Twig_Environment($loader);
$compiler = new Config_Generator_Twig_Compiler($twig);
$twig->setCompiler($compiler);
Но получавам тази грешка:
PHP Уловима фатална грешка: Аргумент 1, предаден на Twig_Node_Module::compile(), трябва да бъде екземпляр на Twig_Compiler, даден екземпляр на Config_Generator_Twig_Compiler, извикан в /config_generator/Config_Generator_Twig_Compiler.php на ред 87 и дефиниран в /config_generator/lib/Twig/Node/ Module.php на ред 36
„Config_Generator_Twig_Compiler.php“ е просто копие на Twig файла „Compiler.php“ с няколко променени реда в горната част:
<?php
require_once $rootDirectory.'/lib/Twig/CompilerInterface.php'; <---- added this line
class Config_Generator_Twig_Compiler implements Twig_CompilerInterface <---- changed from "class Twig_Compiler implements Twig_CompilerInterface"
Останалата част от този файл в момента е същата като "Compiler.php":
{...
public function compile(Twig_NodeInterface $node, $indentation = 0)
{
$this->lastLine = null;
$this->source = '';
$this->sourceOffset = 0;
// source code starts at 1 (as we then increment it when we encounter new lines)
$this->sourceLine = 1;
$this->indentation = $indentation;
if ($node instanceof Twig_Node_Module) {
$this->filename = $node->getAttribute('filename');
}
$node->compile($this); <---- here's line 87
return $this;
}
...}
Twig_Compiler
клас. - person Maerlyn   schedule 12.03.2015class Config_Generator_Twig_Compiler extends Twig_Compiler
. Поради зависимостта трябваше също да добавя тези в горната част на моя скрипт, в този ред:require_once $rootDirectory.'/lib/Twig/CompilerInterface.php'; require_once $rootDirectory.'/lib/Twig/Compiler.php';
- person d_edmonton   schedule 12.03.2015