22 private $paramOverriders;
35 array $paramOverriders = []
37 $this->paramOverriders = $paramOverriders;
47 public function override(array $inputData, array $parameters)
49 foreach ($parameters as
$name => $paramData) {
50 $arrayKeys = explode(
'.',
$name);
53 if (isset($this->paramOverriders[$paramValue])) {
54 $value = $this->paramOverriders[$paramValue]->getOverriddenValue();
73 $currentArray = &$nestedArray;
75 foreach ($arrayKeys as $key) {
76 if (!isset($currentArray[$key])) {
79 $currentArray = &$currentArray[$key];
94 $currentArray = &$nestedArray;
95 $lastKey = array_pop($arrayKeys);
97 foreach ($arrayKeys as $key) {
98 if (!isset($currentArray[$key])) {
99 $currentArray[$key] = [];
101 $currentArray = &$currentArray[$key];
104 $currentArray[$lastKey] = $valueToSet;
126 array $urlPathParams,
127 array $requestBodyParams,
131 if (empty($urlPathParams)) {
132 return $requestBodyParams;
134 $pathParamValue = end($urlPathParams);
136 if ($pathParamValue ===
'me') {
137 return $requestBodyParams;
139 $pathParamKey = key($urlPathParams);
141 if (count($requestBodyParams) == 1 && is_array(end($requestBodyParams))) {
142 $requestDataKey = key($requestBodyParams);
143 if ($this->isPropertyDeclaredInDataObject(
150 $this->substituteParameters($requestBodyParams[$requestDataKey], $pathParamKey, $pathParamValue);
152 $this->substituteParameters($requestBodyParams, $pathParamKey, $pathParamValue);
155 $this->substituteParameters($requestBodyParams, $pathParamKey, $pathParamValue);
157 return $requestBodyParams;
170 $snakeCaseKey = SimpleDataObjectConverter::camelCaseToSnakeCase($key);
171 $camelCaseKey = SimpleDataObjectConverter::snakeCaseToCamelCase($key);
189 private function isPropertyDeclaredInDataObject(
192 $serviceMethodParamName,
195 if ($serviceClassName && $serviceMethodName) {
196 $methodParams = $this->getMethodsMap()->getMethodParams($serviceClassName, $serviceMethodName);
197 $index = array_search($serviceMethodParamName, array_column($methodParams,
'name'));
199 $paramObjectType = $methodParams[
$index][MethodsMap::METHOD_META_TYPE];
200 $setter =
'set' . ucfirst(SimpleDataObjectConverter::snakeCaseToCamelCase($objectProperty));
201 if (array_key_exists(
203 $this->getMethodsMap()->getMethodsMap($paramObjectType)
219 private function getMethodsMap()
221 if ($this->methodsMap ===
null) {
223 ->get(MethodsMap::class);
225 return $this->methodsMap;
setNestedArrayValue(&$nestedArray, $arrayKeys, $valueToSet)
isNestedArrayValueSet(&$nestedArray, $arrayKeys)
overrideRequestBodyIdWithPathParam(array $urlPathParams, array $requestBodyParams, $serviceClassName, $serviceMethodName)
__construct(array $paramOverriders=[])
if(!isset($_GET['name'])) $name