Dom.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\ObjectManager\Config\Reader;
  7. class Dom extends \Magento\Framework\Config\Reader\Filesystem
  8. {
  9. /**
  10. * Name of an attribute that stands for data type of node values
  11. */
  12. const TYPE_ATTRIBUTE = 'xsi:type';
  13. /**
  14. * @var array
  15. */
  16. protected $_idAttributes = [
  17. '/config/preference' => 'for',
  18. '/config/(type|virtualType)' => 'name',
  19. '/config/(type|virtualType)/plugin' => 'name',
  20. '/config/(type|virtualType)/arguments/argument' => 'name',
  21. '/config/(type|virtualType)/arguments/argument(/item)+' => 'name',
  22. ];
  23. /**
  24. * @param \Magento\Framework\Config\FileResolverInterface $fileResolver
  25. * @param \Magento\Framework\ObjectManager\Config\Mapper\Dom $converter
  26. * @param \Magento\Framework\ObjectManager\Config\SchemaLocator $schemaLocator
  27. * @param \Magento\Framework\Config\ValidationStateInterface $validationState
  28. * @param string $fileName
  29. * @param array $idAttributes
  30. * @param string $domDocumentClass
  31. * @param string $defaultScope
  32. */
  33. public function __construct(
  34. \Magento\Framework\Config\FileResolverInterface $fileResolver,
  35. \Magento\Framework\ObjectManager\Config\Mapper\Dom $converter,
  36. \Magento\Framework\ObjectManager\Config\SchemaLocator $schemaLocator,
  37. \Magento\Framework\Config\ValidationStateInterface $validationState,
  38. $fileName = 'di.xml',
  39. $idAttributes = [],
  40. $domDocumentClass = \Magento\Framework\Config\Dom::class,
  41. $defaultScope = 'global'
  42. ) {
  43. parent::__construct(
  44. $fileResolver,
  45. $converter,
  46. $schemaLocator,
  47. $validationState,
  48. $fileName,
  49. $idAttributes,
  50. $domDocumentClass,
  51. $defaultScope
  52. );
  53. }
  54. /**
  55. * Create and return a config merger instance that takes into account types of arguments
  56. *
  57. * {@inheritdoc}
  58. */
  59. protected function _createConfigMerger($mergerClass, $initialContents)
  60. {
  61. return new $mergerClass(
  62. $initialContents,
  63. $this->validationState,
  64. $this->_idAttributes,
  65. self::TYPE_ATTRIBUTE,
  66. $this->_perFileSchema
  67. );
  68. }
  69. }