12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Payment\Gateway\Request;
- use Magento\Framework\ObjectManager\TMap;
- use Magento\Framework\ObjectManager\TMapFactory;
- /**
- * Class BuilderComposite
- * @api
- * @since 100.0.2
- */
- class BuilderComposite implements BuilderInterface
- {
- /**
- * @var BuilderInterface[] | TMap
- */
- private $builders;
- /**
- * @param TMapFactory $tmapFactory
- * @param array $builders
- */
- public function __construct(
- TMapFactory $tmapFactory,
- array $builders = []
- ) {
- $this->builders = $tmapFactory->create(
- [
- 'array' => $builders,
- 'type' => BuilderInterface::class
- ]
- );
- }
- /**
- * Builds ENV request
- *
- * @param array $buildSubject
- * @return array
- */
- public function build(array $buildSubject)
- {
- $result = [];
- foreach ($this->builders as $builder) {
- // @TODO implement exceptions catching
- $result = $this->merge($result, $builder->build($buildSubject));
- }
- return $result;
- }
- /**
- * Merge function for builders
- *
- * @param array $result
- * @param array $builder
- * @return array
- */
- protected function merge(array $result, array $builder)
- {
- return array_replace_recursive($result, $builder);
- }
- }
|