PHP - Nth Recursion如何在没有硬编码的情况下将函数转换为第n级?

时间:2016-09-23 07:06:02

标签: php xml soap

我想看看是否有更好的方法来编写以下代码?第n级并且执行中没有漏洞?

public function getRequestBody($request_service, $request_model)
    {
        $request_operation = $request_service->request_code . $request_service->request_operation . 'Request';
        $request = '<ns1:' . $request_operation . '>';
        foreach (get_object_vars($request_model) as $property => $value) {
            if (!is_object($value)) {
                if (is_array($value)) {
                    foreach ($value as $property_arr) {
                        if (!is_object($property_arr)) {

                        } else {
                            $request .= '<ns1:' . $property . '>';
                            foreach (get_object_vars($property_arr) as $property_inner => $value_inner) {
                                if (is_array($value_inner)) {
                                    foreach ($value_inner as $property_arr_1) {
                                        if (!is_object($property_arr_1)) {

                                    } else {
                                        $request .= '<ns1:' . $property_inner . '>';
                                        foreach (get_object_vars($property_arr_1) as $property_inner_1 => $value_inner_1) {
                                            $request .= '<ns1:' . $property_inner_1 . '>' . $value_inner_1 . '</ns1:' . $property_inner_1 . '>';
                                        }
                                        $request .= '</ns1:' . $property_inner . '>';
                                    }
                                }

                            } else {
                                $request .= '<ns1:' . $property_inner . '>' . $value_inner . '</ns1:' . $property_inner . '>';
                            }
                        }
                        $request .= '</ns1:' . $property . '>';
                    }
                }

            } else {
                $request .= '<ns1:' . $property . '>' . $value . '</ns1:' . $property . '>';
            }
        } else {
            $request .= '<ns1:' . $property . '>';
            foreach (get_object_vars($value) as $property1 => $value1) {
                if (!is_object($value1)) {
                    $request .= '<ns1:' . $property1 . '>' . $value1 . '</ns1:' . $property1 . '>';
                } else {
                    $request .= '<ns1:' . $property1 . '>';
                    foreach (get_object_vars($value1) as $property_inner_2 => $value_inner_2) {
                        if (!is_object($value_inner_2)) {
                            $request .= '<ns1:' . $property_inner_2 . '>' . $value_inner_2 . '</ns1:' . $property_inner_2 . '>';
                        } else {
                            $request .= '<ns1:' . $property_inner_2 . '>';
                            foreach (get_object_vars($value_inner_2) as $property_inner_3 => $value_inner_3) {
                                if (!is_object($value_inner_3)) {
                                    $request .= '<ns1:' . $property_inner_3 . '>' . $value_inner_3 . '</ns1:' . $property_inner_3 . '>';
                                }
                            }
                            $request .= '</ns1:' . $property_inner_2 . '>';
                        }
                    }
                    $request .= '</ns1:' . $property1 . '>';
                }
            }
            $request .= '</ns1:' . $property . '>';
        }
    }
    $request .= '</ns1:' . $request_operation . '>';
    return $request;
}

0 个答案:

没有答案