跳转到主要内容
zheojian 提交于 19 November 2014

发现装饰器是一个为了提供额外功能而封装了另一个发现机制的类(WiKi:Decorate pattern)。发现装饰器遵循与常规发现器类一样的接口,但是它的目的是与另一个发现器串联。发现装饰器的__construct方法需要一个DiscoveryInterface类型的参数和一些其他的必要参数。核心包含两个发现装饰器,我们先来看看CacheDecorater。

Drupal\Core\Plugin\Discovery\CacheDecorator

我们接下来讨论下这里存在的各种方法和它们的功能。

public function __construct(DiscoveryInterface $decorated,$cache_key = NULL);

如上所述,这个方法拥有一个兼容DiscoveryInterface接口的变量$decorated。这可以是任何一种前面讨论过的发现器类。除此之外还有一个变量$cache_key,当调用cache()->get()时会用到。

public function __getPluginDefinition($plugin_id);

如果你有看过任何其他发现器类的代码,应该会熟知这个方法。在CacheDecorator的情况下,我们会检查看看是否有这个已加载的缓存版本,如果我们不这样做,那么它将手动