自1.22.x以来,在Twig中清除整个缓存的惯用方法是什么?


What is idiomatic way to clear whole cache in Twig since 1.22.x?

Twig1.22.0版本开始,不支持使用Twig_Environment::clearCacheFiles()方法。然而,我没有找到任何地方(无论是在文档中,也不是在回购票据中,也不是在SO上)可以取代这个被弃用的方法。

那么现在清除所有缓存文件的惯用方法是什么?

通过实现自己的函数来清除这些文件似乎很奇怪。

所以没有新的惯用方法来清除所有缓存文件。
Twig项目维护者把它留给库用户自己使用。参数是:

这个论点是,Twig本身将只支持文件系统缓存(由于opcache)。因此,clear()与手动删除缓存文件夹相同。因此,它不需要在界面中。因此,您必须手动清除缓存或自己编写方法。

详情请参阅@alain-tiemblo在评论中提到的相关问题

如果您感兴趣,这里是Twig中被弃用的方法,它被转换成一个通用函数。它只删除叶子节点(Twig生成的php文件),而不删除目录。您需要确保传入的路径是正确的。

function clearCacheFiles($cacheLocation) {
  if (is_string($cacheLocation)) {
    foreach (new 'RecursiveIteratorIterator(
        new 'RecursiveDirectoryIterator($cacheLocation), 
        'RecursiveIteratorIterator::LEAVES_ONLY) as $file
    ) {
      if ($file->isFile()) {
        @unlink($file->getPathname());
      }
    }
  }
}

从Twig/lib/Twig/Environment.php第一次标记弃用时的样子