RendererFactory.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Developer\Model\View\Page\Config;
  7. use Magento\Developer\Model\Config\Source\WorkflowType;
  8. use Magento\Framework\App\State;
  9. use Magento\Store\Model\ScopeInterface;
  10. /**
  11. * Factory class for \Magento\Framework\View\Page\Config\RendererInterface
  12. *
  13. * @api
  14. * @since 100.0.2
  15. */
  16. class RendererFactory extends \Magento\Framework\View\Page\Config\RendererFactory
  17. {
  18. /**
  19. * Object Manager instance
  20. *
  21. * @var \Magento\Framework\ObjectManagerInterface
  22. */
  23. protected $objectManager;
  24. /**
  25. * @var \Magento\Framework\App\Config\ScopeConfigInterface
  26. */
  27. protected $scopeConfig;
  28. /**
  29. * Renderer Types
  30. *
  31. * @var array
  32. */
  33. private $rendererTypes;
  34. /**
  35. * Factory constructor
  36. *
  37. * @param \Magento\Framework\ObjectManagerInterface $objectManager
  38. * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
  39. * @param array $rendererTypes
  40. */
  41. public function __construct(
  42. \Magento\Framework\ObjectManagerInterface $objectManager,
  43. \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
  44. array $rendererTypes = []
  45. ) {
  46. $this->objectManager = $objectManager;
  47. $this->scopeConfig = $scopeConfig;
  48. $this->rendererTypes = $rendererTypes;
  49. }
  50. /**
  51. * Create class instance
  52. *
  53. * @param array $data
  54. *
  55. * @return \Magento\Framework\View\Page\Config\RendererInterface
  56. */
  57. public function create(array $data = [])
  58. {
  59. $renderer = $this->objectManager->get(State::class)->getMode() === State::MODE_PRODUCTION ?
  60. WorkflowType::SERVER_SIDE_COMPILATION :
  61. $this->scopeConfig->getValue(WorkflowType::CONFIG_NAME_PATH, ScopeInterface::SCOPE_STORE);
  62. return $this->objectManager->create(
  63. $this->rendererTypes[$renderer],
  64. $data
  65. );
  66. }
  67. }