как работает php мыльный сервер с атрибутами или есть библиотека, которая понимает атрибуты? - PullRequest
3 голосов
/ 23 июня 2011

Я пытался сделать мыльный сервер на PHP, и это хорошо работает, только для wsdl требуется атрибут OptIn, например:

<EmailAdresses>
    <Email OptIn="true">email@domain.com</Email>
</EmailAdresses>

Есть ли хорошая библиотека / классы php, которая работает с атрибутами?чтобы веб-сервис мог возвращать массив или что-то в этом роде определенным образом и чтобы эти доходы поступали в xml с атрибутами.

или как он работает со стандартным мыльным сервером из php?потому что хорошую документацию найти сложно.

заранее спасибо

1 Ответ

2 голосов
/ 30 июня 2011

Я работал со службами SOAP, написанными на нескольких языках, и еще никогда не видел ни одного, который бы использовал атрибуты XML - они всегда просто используют элементы XML со значением внутри элемента (либо строка, либо дополнительные элементы) ).

Я не говорю, что вы не можете использовать атрибуты, но кажется, что простые пары имя-значение лучше подходят для типов структур данных, с которыми хочет работать большинство языков программирования (например, простые переменные или деревья массивов) .

Но твой вопрос пробудил мое любопытство, поэтому я немного покопался для тебя.

Как вы говорите, руководство по PHP на самом деле не особенно подходит по этому вопросу (что необычно - обычно это довольно хороший ресурс), но если вы действительно хотите создать атрибуты в своем SOAP XML, я сделал найдите несколько фрагментов, которые могут помочь.

Одним из предложений, которое возникло несколько раз, было использование подчеркивания в качестве элемента массива в вашей структуре данных, и тогда это стало бы значением для элемента, а другие ключи массива стали бы атрибутами. Примерно так:

$mydata = array('EmailAdresses' => array(
                    'Email' => array(
                         '_' => 'email@domain.com',
                         'OptIn' => 'true')
                     )
                );

Другое предложение, которое я обнаружил, состояло в том, чтобы создать его как объект, а не как массив, используя библиотеку PHP SimpleXML, поскольку это явно позволяет создавать атрибуты XML.

Извините, у меня нет времени, чтобы проверить эти предложения прямо сейчас, но я надеюсь, что это поможет.

...