easytek/doctrine-cache-invalidator-bundle

此包已废弃且不再维护。未建议替代包。

轻松使 doctrine 缓存失效

v0.1 2013-09-19 07:47 UTC

This package is auto-updated.

Last update: 2021-01-25 20:22:48 UTC


README

轻松使 doctrine 缓存失效。

此包仍在开发中。

待办事项

  • 在包配置中定义失效规则,而不是在类中吗?
  • 添加一些测试。
  • 添加 Doctrine 2.3 通配符失效语法。

安装

composer require "easytek/doctrine-cache-invalidator-bundle" "dev-master"

使用

创建此服务

<?php

namespace You\YourBundle\Cache;

use Easytek\DoctrineCacheInvalidatorBundle\Cache\CacheInvalidationInterface;

class CacheInvalidation implements CacheInvalidationInterface
{
    public function getClasses()
    {
        retun array();
    }
}

然后将其添加到您的服务文件配置中

    you.yourbundle.cache_invalidation:
        class: You\YourBundle\Cache\CacheInvalidation
        tags:
            - { name: easytek.doctrine_cache_invalidation }

然后您需要填充您的服务 getClasses 方法的返回数组。该数组包含您要处理的每个 doctrine 实体类的键。此键与一个包含失效规则的数组相关联,每个失效规则也是一个数组,包含以下两个信息

  • 缓存 ID 模式,可以包含 {attribute},就像您在 Twig 中做的那样。
  • 触发失效的实体更改,可以是 "insert"、"update"、"delete" 或 "*",后者包含前三个。

示例

// ...
    public function getClasses()
    {
        return array(
            'You\YourBundle\Entity\Category' => array(
                array(
                    'pattern' => 'category_{id}',
                    'changes' => array('*')
                )
            )
        )
    }

这意味着,当 Category 实体被插入、更新或删除时,缓存 ID 'category_{id}'(其中 {id} 由 $category->getId() 替换)将被清除。