CRM_Core_Resources - Allow container to swap the implementation
authorTim Otten <totten@civicrm.org>
Thu, 18 Oct 2018 02:33:01 +0000 (19:33 -0700)
committerTim Otten <totten@civicrm.org>
Thu, 18 Oct 2018 18:02:47 +0000 (11:02 -0700)
CRM/Core/Resources.php
Civi/Core/Container.php

index 7436cb682a120cd06d79b7a6cb7b1d043aaf85d9..b8e10ff0462f31dae764655accb6d0cda7e0e3b7 100644 (file)
@@ -115,13 +115,7 @@ class CRM_Core_Resources {
       self::$_singleton = $instance;
     }
     if (self::$_singleton === NULL) {
-      $sys = CRM_Extension_System::singleton();
-      $cache = Civi::cache('js_strings');
-      self::$_singleton = new CRM_Core_Resources(
-        $sys->getMapper(),
-        $cache,
-        CRM_Core_Config::isUpgradeMode() ? NULL : 'resCacheCode'
-      );
+      self::$_singleton = Civi::service('resources');
     }
     return self::$_singleton;
   }
index cdaabecc91e36380016b2f31e53e91d3f0e66e07..9ca66a67c1c1112d18a481df474ef86cb0f1a758 100644 (file)
@@ -201,7 +201,6 @@ class Container {
 
     // Expose legacy singletons as services in the container.
     $singletons = array(
-      'resources' => 'CRM_Core_Resources',
       'httpClient' => 'CRM_Utils_HttpClient',
       'cache.default' => 'CRM_Utils_Cache',
       'i18n' => 'CRM_Core_I18n',
@@ -216,6 +215,11 @@ class Container {
     }
     $container->setAlias('cache.short', 'cache.default');
 
+    $container->setDefinition('resources', new Definition(
+      'CRM_Core_Resources',
+      [new Reference('service_container')]
+    ))->setFactory(array(new Reference(self::SELF), 'createResources'));
+
     $container->setDefinition('prevnext', new Definition(
       'CRM_Core_PrevNextCache_Interface',
       [new Reference('service_container')]
@@ -411,6 +415,19 @@ class Container {
     return $kernel;
   }
 
+  /**
+   * @param ContainerInterface $container
+   * @return \CRM_Core_Resources
+   */
+  public static function createResources($container) {
+    $sys = \CRM_Extension_System::singleton();
+    return new \CRM_Core_Resources(
+      $sys->getMapper(),
+      $container->get('cache.js_strings'),
+      \CRM_Core_Config::isUpgradeMode() ? NULL : 'resCacheCode'
+    );
+  }
+
   /**
    * @param ContainerInterface $container
    * @return \CRM_Core_PrevNextCache_Interface