从类缓存中排除某些类

时间:2015-03-19 09:43:09

标签: symfony caching typo3

我正在尝试为typo3构建一个sf2连接器。 问题是两者都使用Psr/Logger/Interface并且都将它们保存在不同的文件夹中。

虽然拼写错误的路径Psr紧密绑定在Core( * sigh * ),但symfony2直接在类缓存中定义,我不想停用它表现原因。

所以问题是:

  • :我怎样才能阻止Symfony2在其类缓存中使用某些类?
  • :如何使用if (!class_exists('\Namespace\of\that\class\ThatClass')) { ...将所有类定义包装在symfony2类缓存中?

更新 到目前为止,我通过从使用LoggerInterface的symfony类映射中排除类来解决它。

我是通过覆盖AppKernel中的doLoadClassCache方法来实现的。 然而,这更像是一个Workarround:

protected function doLoadClassCache($name, $extension)
{
    if (!$this->booted && is_file($this->getCacheDir().'/classes.map')) {
        $classes = array_filter(include($this->getCacheDir().'/classes.map'), function($item) {
            return (strpos($item, 'Monolog') === false);
        });
        ClassCollectionLoader::load($classes, $this->getCacheDir(), $name, $this->debug, false, $extension);
    }
}

0 个答案:

没有答案