在命名空间类中实例化twig

时间:2014-11-07 17:27:23

标签: php namespaces twig

我遇到了一些问题,试图弄清楚如何以特定的方式使用Twig。我试图编写一个我可以在我的应用程序中使用的视图类,无论安装什么模板系统,这样我唯一需要改变的就是模板本身和视图类。

但是,当我尝试在课堂上创建树枝对象时,我会遇到Fatal error: Class 'Template\Twig_Loader_Filesystem' not found错误,而且我不确定我错过了什么。

有人能指出我正确的方向吗?

这是我到目前为止所得到的......

composer.json

{
    "name": "Movies",
    "description": "Find movies",
    "require": {
        "ext-curl": "*",
        "twig/twig": "~1.0"
   },
    "autoload": {
        "classmap": [
            "app/classes"
        ]
    }
}

的index.php

require_once 'app/app.php';
use Template\Template;

echo Template::render('hello.html', array('name' => 'bob', 'age' => '33'));

应用/ app.php

define('APP_DIRECTORY', __DIR__ . '/..');
require_once APP_DIRECTORY . '/vendor/autoload.php';

应用/类/ Template.class.php

namespace Template;

class Template {

    static function render($template_name, $template_data = array()) {
        $loader = new Twig_Loader_Filesystem(APP_DIRECTORY . '/app/templates');
        $twig = new Twig_Environment($loader);

        return $twig->render('hello.html', array('name' => 'lisa', 'age' => '33'));
    }
}

1 个答案:

答案 0 :(得分:0)

好的,每当我尝试在我的Template类中包含twig命名空间时,我就错了。看看我的组织整合的其他项目,结果只是添加了

use Twig_Environment;
use Twig_Loader_Filesystem;

上课就足够了。我不确定我是否真的必须添加任何内容,因为包含Autoloader,或者如果我必须包含部分路径,例如Twig_Twig/Loader/Filesystem或类似的东西。显然,这些都没有起作用。