Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Reader.php
Go to the documentation of this file.
1 <?php
7 
12 use Magento\Framework\ObjectManager\ConfigInterface as ObjectManagerConfig;
13 use Magento\Framework\Reflection\MethodsMap as ServiceMethodsMap;
14 
18 class Reader implements ReaderInterface
19 {
23  private $defaultValueProvider;
24 
28  private $objectManagerConfig;
29 
33  private $reflectionGenerator;
34 
38  private $serviceMethodsMap;
39 
48  public function __construct(
49  DefaultValueProvider $defaultValueProvider,
50  ObjectManagerConfig $objectManagerConfig,
51  ReflectionGenerator $reflectionGenerator,
52  ServiceMethodsMap $serviceMethodsMap
53  ) {
54  $this->defaultValueProvider = $defaultValueProvider;
55  $this->objectManagerConfig = $objectManagerConfig;
56  $this->reflectionGenerator = $reflectionGenerator;
57  $this->serviceMethodsMap = $serviceMethodsMap;
58  }
59 
65  public function read($scope = null)
66  {
67  $result = [];
68  $connectionName = $this->defaultValueProvider->getConnection();
69  $connections = [
70  $connectionName => [
71  'name' => $connectionName,
72  'exchange' => $this->defaultValueProvider->getExchange(),
73  'disabled' => false,
74  ]
75  ];
76  foreach ($this->getRemoteServices() as $serviceInterface => $remoteImplementation) {
77  try {
78  $methodsMap = $this->serviceMethodsMap->getMethodsMap($serviceInterface);
79  } catch (\Exception $e) {
80  throw new \LogicException(sprintf('Service interface was expected, "%s" given', $serviceInterface));
81  }
82  foreach ($methodsMap as $methodName => $returnType) {
83  $topic = $this->reflectionGenerator->generateTopicName($serviceInterface, $methodName);
84  $result[$topic] = [
85  'topic' => $topic,
86  'disabled' => false,
87  'connections' => $connections,
88 
89  ];
90  }
91  }
92  return $result;
93  }
94 
100  private function getRemoteServices()
101  {
102  $preferences = $this->objectManagerConfig->getPreferences();
103  $remoteServices = [];
104  foreach ($preferences as $type => $preference) {
105  if ($preference == $type . RemoteServiceGenerator::REMOTE_SERVICE_SUFFIX) {
106  $remoteServices[$type] = $preference;
107  }
108  }
109  return $remoteServices;
110  }
111 }
$type
Definition: item.phtml:13
__construct(DefaultValueProvider $defaultValueProvider, ObjectManagerConfig $objectManagerConfig, ReflectionGenerator $reflectionGenerator, ServiceMethodsMap $serviceMethodsMap)
Definition: Reader.php:48