致命错误:未被捕获的错误:找不到类'Twig_Autoloader'

时间:2019-08-26 18:52:49

标签: php twig fatal-error templating templating-engine

最近我通过Composer for PHP7.2安装了Twig2.0,运行代码时出现这些错误,

  

(!)致命错误:未捕获错误:未找到类“ Twig_Autoloader”   在第4行的C:\ wamp64 \ www \ php-twig \ example.php中

     

(!)错误:在第4行的C:\ wamp64 \ www \ php-twig \ example.php中找不到类'Twig_Autoloader'

我在GitHub中讨论了这些问题。

这是我的PHP代码,

<?php

require 'vendor/autoload.php';
Twig_Autoloader::register();

$loader = new Twig_Loader_Filesystem('templates');

$options = array(
    'name' => 'Sumithran',
);

$twig = new Twig_Environment($loader, $options);

还有index.twig

<!DOCTYPE html>

<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Twig test</title>
</head>
<body>

    <h1>Hello world</h1>

    <p>And hello {{ name }}</p>

</body>
</html>

该如何解决?
预先感谢!

2 个答案:

答案 0 :(得分:0)

Twig_Autoloader在1.21版中已弃用。您正在使用2.0版,因此必须使用:

$loader = new \Twig\Loader\FilesystemLoader('templates');

$options = array(
    'name' => 'Sumithran',
);

$twig = new \Twig\Environment($loader, $options);

更多详情,请访问Twig Docs - Twig for Developers

答案 1 :(得分:0)

Twig 2+版引入了命名空间的使用,并且类结构现在有所不同。

例如,文件系统加载器位于Twig_Loader_Filesystem中,而不是Twig\Loader\FilesystemLoader中。

您还可以使用rector一次将所有名称空间更改为版本2。

Tomas Votruba在此blog-post中详细介绍了该过程。

TLDR; -运行以下命令以无缝升级到名称空间。

composer require rector/rector --dev # make sure you have version 0.4.10+ at least
vendor/bin/rector process src --level twig-underscore-to-namespace