Я пишу SoapServer с PHP 5.2, чтобы вернуть список вакансий в другое приложение. Мой WSDL документ требует сложного типа вдоль линий:Структурирование PHP-массива для использования в SOAP с WSDL
<xsd:element name="Vacancies">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Vacancy" type="ns:VacancyType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Моей функции генерирует большой, вложенный массив, чтобы собрать каждую вакансию, а затем возвращая массив массивов (то есть: вакансии) в SoapServer.
К сожалению, каждый массив индексируется. Поэтому каждый элемент VacancyType в разделе «Вакансии» имеет уникальный индекс. Это, похоже, отключает определение WSDL, и возвращаемые мне данные просто вызывают ошибку синтаксического анализа. Обычно я использую ассоциативные массивы для значений пары ключей, но поскольку я имею дело с n экземплярами VacancyType, которые не будут работать, поскольку не было бы уникальной ссылки.
Существует ли известное обходное решение для такого сценария (например, возможно, объект), или я должен переработать мой документ WSDL для обслуживания индексированных массивов?
Thanks
Можете ли вы объяснить вашу структуру данных лучше? Какая связь между вакансиями и типом? Вакансия может иметь несколько типов? Возможно, вы могли бы добавить образец вашего массива к вопросу. –
Извините, если это немного вводит в заблуждение, VacancyType относится к определению XSD для сложного типа (я не думаю, что мне нужно его подробно описать). Во всех смыслах и целях это можно было бы назвать Vacancy. Ответ для этой функции должны возвращать что-то вроде: * Вакансии * VacancyType * Данные в этом ... * VacancyType * Данные в этом ... * VacancyType * Данные в этом ... Я создаю это с помощью массива и позволяю SoapServer преобразовывать его в соответствующий ответ на основе WSDL, но он борется с индексированным массивом VacancyType – johan
. Где возникла проблема? Марширование массива в SOAPRequest? Разве это не просто серия вложенных объектов Vacancy? – awithrow