浏览代码

[AsseticBundle] added compiler pass for factory workers

Kris Wallsmith 14 年之前
父节点
当前提交
f7b7288892
共有 1 个文件被更改,包括 36 次插入0 次删除
  1. 36 0
      src/Symfony/Bundle/AsseticBundle/DependencyInjection/Compiler/AssetFactoryPass.php

+ 36 - 0
src/Symfony/Bundle/AsseticBundle/DependencyInjection/Compiler/AssetFactoryPass.php

@@ -0,0 +1,36 @@
+<?php
+
+/*
+ * This file is part of the Symfony framework.
+ *
+ * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace Symfony\Bundle\AsseticBundle\DependencyInjection\Compiler;
+
+use Symfony\Component\DependencyInjection\Reference;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
+
+/**
+ * Adds services tagged as workers to the asset factory.
+ *
+ * @author Kris Wallsmith <kris.wallsmith@symfony-project.com>
+ */
+class AssetFactoryPass implements CompilerPassInterface
+{
+    public function process(ContainerBuilder $container)
+    {
+        if (!$container->hasDefinition('assetic.asset_factory')) {
+            return;
+        }
+
+        $factory = $container->getDefinition('assetic.asset_factory');
+        foreach ($container->findTaggedServiceIds('assetic.factory_worker') as $id => $attr) {
+            $factory->addMethodCall('addWorker', array(new Reference($id)));
+        }
+    }
+}