1

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

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

( ! ) 错误:在第 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>

如何解决这个问题?
提前致谢!

4

2 回答 2

2

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中获得更多详细信息。

于 2019-08-26T20:56:20.260 回答
0

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

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

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

Tomas Votruba 在这篇博文中更详细地描述了这个过程。

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
于 2019-08-26T20:56:40.503 回答