Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ReflectionGenerator.php
Go to the documentation of this file.
1 <?php
7 
10 
15 {
16  const DEFAULT_HANDLER = 'defaultHandler';
17 
21  private $methodsMap;
22 
28  public function __construct(MethodsMap $methodsMap)
29  {
30  $this->methodsMap = $methodsMap;
31  }
32 
40  public function extractMethodMetadata($className, $methodName)
41  {
42  $result = [
44  Config::SCHEMA_METHOD_RETURN_TYPE => $this->methodsMap->getMethodReturnType($className, $methodName),
46  ];
47  $paramsMeta = $this->methodsMap->getMethodParams($className, $methodName);
48  foreach ($paramsMeta as $paramPosition => $paramMeta) {
50  Config::SCHEMA_METHOD_PARAM_NAME => $paramMeta[MethodsMap::METHOD_META_NAME],
51  Config::SCHEMA_METHOD_PARAM_POSITION => $paramPosition,
52  Config::SCHEMA_METHOD_PARAM_IS_REQUIRED => !$paramMeta[MethodsMap::METHOD_META_HAS_DEFAULT_VALUE],
53  Config::SCHEMA_METHOD_PARAM_TYPE => $paramMeta[MethodsMap::METHOD_META_TYPE],
54  ];
55  }
56  return $result;
57  }
58 
68  public function generateTopicConfigForServiceMethod($topicName, $serviceType, $serviceMethod, $handlers = [])
69  {
70  $methodMetadata = $this->extractMethodMetadata($serviceType, $serviceMethod);
71  $returnType = $methodMetadata[Config::SCHEMA_METHOD_RETURN_TYPE];
72  $returnType = ($returnType != 'void' && $returnType != 'null') ? $returnType : null;
73  return [
74  Config::TOPIC_NAME => $topicName,
75  Config::TOPIC_IS_SYNCHRONOUS => $returnType ? true : false,
78  Config::TOPIC_RESPONSE => $returnType,
79  Config::TOPIC_HANDLERS => $handlers
80  ?: [self::DEFAULT_HANDLER => $methodMetadata[Config::SCHEMA_METHOD_HANDLER]]
81  ];
82  }
83 
94  public function generateTopicName($typeName, $methodName)
95  {
96  $parts = explode('\\', ltrim($typeName, '\\'));
97  foreach ($parts as &$part) {
98  $part = lcfirst($part);
99  }
100  return implode('.', $parts) . '.' . $methodName;
101  }
102 }
generateTopicConfigForServiceMethod($topicName, $serviceType, $serviceMethod, $handlers=[])
if($currentSelectedMethod==$_code) $className
Definition: form.phtml:31