/** * Get engine by it's type. * * @param string $engine * @param bool $reload If true engine will receive new instance of loader and enviroment. * @return EngineInterface */ public function engine($engine, $reload = false) { if (!isset($this->engines[$engine])) { $parameters = $this->config->engineParameters($engine); $parameters['loader'] = $this->loader($engine); $parameters['environment'] = $this->environment(); //We have to create an engine $benchmark = $this->benchmark('engine', $engine); try { $this->engines[$engine] = $this->container->make($this->config->engineClass($engine), $parameters); } finally { $this->benchmark($benchmark); } $reload = true; } //Configuring engine if ($reload) { $this->engines[$engine]->setLoader($this->loader($engine)); $this->engines[$engine]->setEnvironment($this->environment()); } return $this->engines[$engine]; }