/** * @param array $propResultArray * @return array */ public final function getResultAsArray(array $propResultArray = null) { if ($propResultArray === null) { if ($this->propResultArray !== null && is_array($this->propResultArray)) { $propResultArray = $this->propResultArray; } else { error_log(ErrorMessages::getPropresultarrayNotSuppliedMessage()); return []; } } $processArray = function ($inputArray) use(&$processArray) { $processedArray = array(); foreach ($inputArray as $key => $prop) { if (is_string($prop)) { $propGetter = "get" . ucfirst($prop); if (method_exists($this, $propGetter)) { $processedArray[is_string($key) ? $key : $prop] = call_user_func(array($this, $propGetter)); } else { error_log(ErrorMessages::getMethodDoesNotExistMessage($propGetter, get_class($this))); } } if (is_array($prop)) { $processedArray[$key] = $processArray($prop); } } return $processedArray; }; return $processArray($propResultArray); }