Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
MergeService.php
Go to the documentation of this file.
1 <?php
7 
9 
14 {
20  protected $objectManager;
21 
27  protected $config;
28 
34  protected $filesystem;
35 
41  protected $state;
42 
51  public function __construct(
54  \Magento\Framework\Filesystem $filesystem,
55  \Magento\Framework\App\State $state
56  ) {
57  $this->objectManager = $objectManager;
58  $this->config = $config;
59  $this->filesystem = $filesystem;
60  $this->state = $state;
61  }
62 
71  public function getMergedAssets(array $assets, $contentType)
72  {
73  $isCss = $contentType == 'css';
74  $isJs = $contentType == 'js';
75  if (!$isCss && !$isJs) {
76  throw new \InvalidArgumentException("Merge for content type '{$contentType}' is not supported.");
77  }
78 
79  $isCssMergeEnabled = $this->config->isMergeCssFiles();
80  $isJsMergeEnabled = $this->config->isMergeJsFiles();
81  if (($isCss && $isCssMergeEnabled) || ($isJs && $isJsMergeEnabled)) {
82  $mergeStrategyClass = \Magento\Framework\View\Asset\MergeStrategy\FileExists::class;
83 
84  if ($this->state->getMode() === \Magento\Framework\App\State::MODE_DEVELOPER) {
85  $mergeStrategyClass = \Magento\Framework\View\Asset\MergeStrategy\Checksum::class;
86  }
87 
88  $mergeStrategy = $this->objectManager->get($mergeStrategyClass);
89 
90  $assets = $this->objectManager->create(
91  \Magento\Framework\View\Asset\Merged::class,
92  ['assets' => $assets, 'mergeStrategy' => $mergeStrategy]
93  );
94  }
95 
96  return $assets;
97  }
98 
104  public function cleanMergedJsCss()
105  {
106  $this->filesystem->getDirectoryWrite(DirectoryList::STATIC_VIEW)
107  ->delete(Merged::getRelativeDir());
108  }
109 }
__construct(\Magento\Framework\ObjectManagerInterface $objectManager, ConfigInterface $config, \Magento\Framework\Filesystem $filesystem, \Magento\Framework\App\State $state)
getMergedAssets(array $assets, $contentType)