在建设者的枝杈装载者

时间:2015-10-02 12:13:36

标签: constructor twig loader

我尝试使用twig

创建自己的Response类
<?php

namespace app\library;

class Response
{

public function __construct($temp, $data)
{
    $loader = new Twig_Loader_Filesystem('app/views');
    $twig = new Twig_Environment($loader);

    print $twig->render($temp, $data);
}
}

但是当我尝试使用它时

use app\library\Response;
error_reporting(E_ALL);
require_once "vendor/autoload.php";
$arr = array('name'=>'Bob', 'surname'=>'Dow', 'gender'=>'male','age'=>'25');
new Response('temp.php', $arr);

它给了我

Fatal error: Class 'app\library\Twig_Loader_Filesystem' not found in /var/www/PHP/app/library/Response.php on line 12

哪里出错?

1 个答案:

答案 0 :(得分:1)

请仔细检查错误。它说类&app; app \ library \ Twig_Loader_Filesystem&#39;不存在。您的Response类位于app \ library命名空间下,因此您尝试在其中实例化的每个类也将在此命名空间中查找。基本上它与写

相同
$loader = new app\library\Twig_Loader_Filesystem('app/views');
$twig = new app\library\Twig_Environment($loader);

通常在这种情况下,你必须输入一个类的全名,包括它的命名空间,或者在使用use语句的帮助下制作简写,就像你实例化Response类一样。

在您的特定情况下,类Twig_Loader_Filesystem和Twig_Environment存在于全局命名空间中,因此您可以在类前添加\以声明这些类位于全局命名空间中:

$loader = \Twig_Loader_Filesystem('app/views');
$twig = \Twig_Environment($loader);

或创建这样的速记:

use Twig_Loader_Filesystem;
use Twig_Environment;