Resolver.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\View\Element\Template\File;
  7. use Magento\Framework\App\ObjectManager;
  8. use Magento\Framework\Serialize\Serializer\Json;
  9. /**
  10. * Class Resolver
  11. * @package Magento\Framework\View\Element\Template\File
  12. */
  13. class Resolver
  14. {
  15. /**
  16. * Template files map
  17. *
  18. * @var []
  19. */
  20. protected $_templateFilesMap = [];
  21. /**
  22. * View filesystem
  23. *
  24. * @var \Magento\Framework\View\FileSystem
  25. */
  26. protected $_viewFileSystem;
  27. /**
  28. * @var Json
  29. */
  30. private $serializer;
  31. /**
  32. * Class constructor
  33. *
  34. * @param \Magento\Framework\View\FileSystem $viewFileSystem
  35. * @param Json $serializer
  36. */
  37. public function __construct(
  38. \Magento\Framework\View\FileSystem $viewFileSystem,
  39. Json $serializer = null
  40. ) {
  41. $this->_viewFileSystem = $viewFileSystem;
  42. $this->serializer = $serializer ?: ObjectManager::getInstance()->get(Json::class);
  43. }
  44. /**
  45. * Get template filename
  46. *
  47. * @param string $template
  48. * @param [] $params
  49. * @return string|bool
  50. */
  51. public function getTemplateFileName($template, $params = [])
  52. {
  53. $key = $template . '_' . $this->serializer->serialize($params);
  54. if (!isset($this->_templateFilesMap[$key])) {
  55. $this->_templateFilesMap[$key] = $this->_viewFileSystem->getTemplateFileName($template, $params);
  56. }
  57. return $this->_templateFilesMap[$key];
  58. }
  59. }