我尝试使用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
哪里出错?
答案 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;