Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Mode.php
Go to the documentation of this file.
1 <?php
7 namespace Magento\Deploy\Model;
8 
18 use Symfony\Component\Console\Input\InputInterface;
19 use Symfony\Component\Console\Output\OutputInterface;
20 use Magento\Config\Console\Command\ConfigSet\ProcessorFacadeFactory;
24 
31 class Mode
32 {
36  private $input;
37 
41  protected $output;
42 
46  private $writer;
47 
51  private $reader;
52 
56  private $filesystem;
57 
61  private $configProvider;
62 
68  private $processorFacadeFactory;
69 
75  private $emulatedAreaProcessor;
76 
80  private $maintenanceModeEnabler;
81 
96  public function __construct(
97  InputInterface $input,
98  OutputInterface $output,
99  Writer $writer,
100  Reader $reader,
101  MaintenanceMode $maintenanceMode,
102  Filesystem $filesystem,
103  ConfigProvider $configProvider = null,
104  ProcessorFacadeFactory $processorFacadeFactory = null,
105  EmulatedAdminhtmlAreaProcessor $emulatedAreaProcessor = null,
106  MaintenanceModeEnabler $maintenanceModeEnabler = null
107  ) {
108  $this->input = $input;
109  $this->output = $output;
110  $this->writer = $writer;
111  $this->reader = $reader;
112  $this->filesystem = $filesystem;
113 
114  $this->configProvider =
115  $configProvider ?: ObjectManager::getInstance()->get(ConfigProvider::class);
116  $this->processorFacadeFactory =
117  $processorFacadeFactory ?: ObjectManager::getInstance()->get(ProcessorFacadeFactory::class);
118  $this->emulatedAreaProcessor =
119  $emulatedAreaProcessor ?: ObjectManager::getInstance()->get(EmulatedAdminhtmlAreaProcessor::class);
120  $this->maintenanceModeEnabler =
121  $maintenanceModeEnabler ?: ObjectManager::getInstance()->get(MaintenanceModeEnabler::class);
122  }
123 
130  public function enableProductionMode()
131  {
132  $this->maintenanceModeEnabler->executeInMaintenanceMode(
133  function () {
134  $previousMode = $this->getMode();
135  try {
136  // We have to turn on production mode before generation.
137  // We need this to enable generation of the "min" files.
139  $this->filesystem->regenerateStatic($this->output);
140  } catch (LocalizedException $e) {
141  // We have to return store mode to previous state in case of error.
142  $this->setStoreMode($previousMode);
143  throw $e;
144  }
145  },
147  false
148  );
149  }
150 
156  public function enableProductionModeMinimal()
157  {
159  }
160 
166  public function enableDeveloperMode()
167  {
168  $this->filesystem->cleanupFilesystem(
169  [
175  ]
176  );
178  }
179 
185  public function enableDefaultMode()
186  {
187  $this->filesystem->cleanupFilesystem(
188  [
194  ]
195  );
197  }
198 
205  public function getMode()
206  {
207  $env = $this->reader->load();
208  return isset($env[State::PARAM_MODE]) ? $env[State::PARAM_MODE] : null;
209  }
210 
217  protected function setStoreMode($mode)
218  {
219  $this->saveAppConfigs($mode);
220  $data = [
223  ]
224  ];
225  $this->writer->saveConfig($data);
226  }
227 
234  private function saveAppConfigs($mode)
235  {
236  $configs = $this->configProvider->getConfigs($this->getMode(), $mode);
237  foreach ($configs as $path => $value) {
238  $this->emulatedAreaProcessor->process(function () use ($path, $value) {
239  $this->processorFacadeFactory->create()->processWithLockTarget(
240  $path,
241  $value,
243  null,
244  true
245  );
246  });
247  $this->output->writeln('Config "' . $path . ' = ' . $value . '" has been saved.');
248  }
249  }
250 }
output($string, $level=INFO, $label='')
return false
Definition: gallery.phtml:36
$value
Definition: gender.phtml:16
if($exist=($block->getProductCollection() && $block->getProductCollection() ->getSize())) $mode
Definition: grid.phtml:15
$filesystem
__construct(InputInterface $input, OutputInterface $output, Writer $writer, Reader $reader, MaintenanceMode $maintenanceMode, Filesystem $filesystem, ConfigProvider $configProvider=null, ProcessorFacadeFactory $processorFacadeFactory=null, EmulatedAdminhtmlAreaProcessor $emulatedAreaProcessor=null, MaintenanceModeEnabler $maintenanceModeEnabler=null)
Definition: Mode.php:96