当前位置: 首页>>代码示例>>PHP>>正文


PHP DrupalKernel::setSitePath方法代码示例

本文整理汇总了PHP中Drupal\Core\DrupalKernel::setSitePath方法的典型用法代码示例。如果您正苦于以下问题:PHP DrupalKernel::setSitePath方法的具体用法?PHP DrupalKernel::setSitePath怎么用?PHP DrupalKernel::setSitePath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Drupal\Core\DrupalKernel的用法示例。


在下文中一共展示了DrupalKernel::setSitePath方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: getCompiledContainerBuilder

 /**
  * Prepares a precompiled ContainerBuilder for all tests of this class.
  *
  * Avoids repetitive calls to ContainerBuilder::compile(), which is very slow.
  *
  * Based on the (always identical) list of $modules to enable, an initial
  * container is compiled, all instantiated services are reset/removed, and
  * this precompiled container is stored in a static class property. (Static,
  * because PHPUnit instantiates a new class instance for each test *method*.)
  *
  * This method is not invoked if there is only a single test method. It is
  * also not invoked for tests running in process isolation (since each test
  * method runs in a separate process).
  *
  * The ContainerBuilder is not dumped into the filesystem (which would yield
  * an actually compiled Container class), because
  *
  * 1. PHP code cannot be unloaded, so e.g. 900 tests would load 900 different,
  *    full Container classes into memory, quickly exceeding any sensible
  *    memory consumption (GigaBytes).
  * 2. Dumping a Container class requires to actually write to the system's
  *    temporary directory. This is not really easy with vfs, because vfs
  *    doesn't support yet "include 'vfs://container.php'.". Maybe we could fix
  *    that upstream.
  * 3. PhpDumper is very slow on its own.
  *
  * @param string[] $modules
  *   The list of modules to enable.
  *
  * @return \Drupal\Core\DependencyInjection\ContainerBuilder
  *   A clone of the precompiled, empty service container.
  */
 private function getCompiledContainerBuilder(array $modules)
 {
     if (!isset(self::$initialContainerBuilder)) {
         $kernel = new DrupalKernel('testing', $this->classLoader, FALSE);
         $kernel->setSitePath($this->siteDirectory);
         if ($modules && ($extensions = $this->getExtensionsForModules($modules))) {
             $kernel->updateModules($extensions, $extensions);
         }
         $kernel->boot();
         self::$initialContainerBuilder = $kernel->getContainer();
         // Remove all instantiated services, so the container is safe for cloning.
         // Technically, ContainerBuilder::set($id, NULL) removes each definition,
         // but the container is compiled/frozen already.
         foreach (self::$initialContainerBuilder->getServiceIds() as $id) {
             self::$initialContainerBuilder->set($id, NULL);
         }
         // Destruct and trigger garbage collection.
         \Drupal::unsetContainer();
         $kernel->shutdown();
         $kernel = NULL;
         // @see register()
         $this->container = NULL;
     }
     $container = clone self::$initialContainerBuilder;
     return $container;
 }
开发者ID:aWEBoLabs,项目名称:taxi,代码行数:58,代码来源:KernelTestBase.php


注:本文中的Drupal\Core\DrupalKernel::setSitePath方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。