рдПрдХ iPhone рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, Zend_Soap_Server рдХреА рдПрдХ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рд╛рдордиреЗ рдЖрдИред рдпрд╣ рд╕реНрд╡рддрдГрд╕реНрдлреВрд░реНрдд (рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ) рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬрдм php рд╕рд░рдгрд┐рдпрд╛рдБ рд╡рд╛рдкрд╕ рдЖрдИрдВред рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╣рдореЗрдВ рдХрдИ рдШрдВрдЯреЗ рд▓рдЧреЗ, рдФрд░ рд╢рд╛рдпрдж рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рд╡рд╣реА рдХреБрдЫ рдШрдВрдЯреЗ рдмрдЪреЗрдВрдЧреЗред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ Zend_Soap_Server рдмрд┐рд▓реНрдЯ-рдЗрди
SoapServer рдкрд░ рдПрдХ рд╕рд░рд▓ рдЖрд╡рд░рдг рд╣реИ, рдФрд░ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдкреНрд░рднрд╛рд╡ рди рдХреЗрд╡рд▓ ZF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдордирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реАрдзреЗ SoapServer рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рднреАред
рдЬрд┐рд╕ рддрд░реАрдХреЗ рд╕реЗ рд░рд╣рд╕реНрдпрдордп рддрд░реАрдХреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реБрдИ, рд╡рд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрдЯрд▓ рдХреА рдХреАрдорддреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд▓рдЧреА рд╣реБрдИ рд╣реИред рд╡реЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЕрдВрддрд┐рдо рд╕рдВрд░рдЪрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
<?php $result = array( 'info' => array( 'key_1' => 'value_1', ..., 'key_n' => 'value_n' ), 'prices' => array( id_1 => price_1, ... id_m => price_m ) ); return $result; ?>
рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ - рд╕рд░реНрд╡рд░ рдкрд░ рдХреАрдорддреЗрдВ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдСрд░реНрдбрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ; id_k рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИрдВ, (рд╣реЛрдЯрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛); рдпрджрд┐ рджрд┐рдП рдЧрдП рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд┐рд╕реА рднреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рдХреЛ рдЦреЛрдЬрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ (рджреВрд╕рд░реА рд╕рдВрд░рдЪрдирд╛)ред
рд╕рднреА рд╕рдорд╕реНрдпрд╛рдПрдБ, рдЬреИрд╕рд╛ рдХрд┐ рдХреНрд╡реЗрд░реА рд▓реЙрдЧ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдореВрд▓реНрдп рд╕рд░рдгреА рд╕реЗ рдЬреБрдбрд╝реА рдереАрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ "рд╢рд╛рд╕реНрддреНрд░реАрдп" рдЕрд░реНрдереЛрдВ рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдирд╣реАрдВ рдереАред рдпрд╣реА рд╣реИ, рдЗрд╕рдХреА рдХреБрдВрдЬрд┐рдпрд╛рдБ рд▓рдЧрд╛рддрд╛рд░ рдкреВрд░реНрдгрд╛рдВрдХ рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдИ рдереАрдВред 0. рд╕рдорд╛рди рдбреЗрдЯрд╛ SoapServer рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ (рдХрд╛рдлреА) рдорд╛рдирддрд╛ рд╣реИ рдФрд░ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдЖрдк рдЙрддреНрддрд░ рдХреА рдХрдЪреНрдЪреА xml рдореЗрдВ рдорд┐рд▓ рдЬрд╛рддреЗ рд╣реИрдВ)
<item> <key xsi:type="xsd:string">prices</key> <value xsi:type="ns2:Map"> <item> <key xsi:type="xsd:int">100</key> <value xsi:type="xsd:int">150</value> </item> <item> <key xsi:type="xsd:int">2</key> <value xsi:type="xsd:int">300</value> </item> <item> <key xsi:type="xsd:int">1078</key> <value xsi:type="xsd:int">306</value> </item> </value> </item>
рдФрд░ рдХреЗрд╡рд▓ рдХрднреА-рдХрднреА рдХреАрдорддреЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдХреНрд▓рд╛рд╕рд┐рдХ" рд╕рд░рдгреА рдмрди рдЧрдИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕реА рд╕реНрдерд┐рддрд┐ рддрдм рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдЬрдм id = 0 рд╡рд╛рд▓рд╛ рд╣реЛрдЯрд▓ рдПрдХрдорд╛рддреНрд░ рдЙрдкрд▓рдмреНрдз рд╡рд┐рдХрд▓реНрдк рдерд╛ред SoapSever рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ Array рдкреНрд░рдХрд╛рд░ (рдлрд┐рд░, рдирд┐рд╖реНрдкрдХреНрд╖ рд░реВрдк рд╕реЗ) рдХреЛ рдорд╛рдирддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
<item> <key xsi:type="xsd:string">prices</key> <value enc:itemType="xsd:int" enc:arraySize="1" xsi:type="enc:Array"> <item xsi:type="xsd:int">420</item> </value> </item>
рд╢рд╛рдпрдж рдПрдХ рддреНрд░реБрдЯрд┐ рдкрд╣рд▓реЗ рд╣реБрдИ рд╣реЛрдЧреА рдпрджрд┐ рд╡рд┐рдзрд┐ "рдЦрд╛рд▓реА" рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╕рдВрд░рдЪрдирд╛ рд▓реМрдЯрд╛рддреА рд╣реИред рдпрд╣ рд╕реНрдерд┐рддрд┐ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЕрд▓рдЧ рдорд╛рдорд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИ, рдФрд░ рд╕реЛрдкрд╕реЗрд╡рд░ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рдХреЛ рдПрдХ рд╕рд░рдгреА рдкреНрд░рдХрд╛рд░ рдорд╛рдирддрд╛ рд╣реИ:
<item> <key xsi:type="xsd:string">prices</key> <value enc:itemType="xsd:anyType" enc:arraySize="0" xsi:type="enc:Array"/> </item>
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдорд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ - рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдореИрдк, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдПрд░реЗред рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣рдореЗрд╢рд╛ рдореИрдк рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрд░рд┐рдпрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХреА рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдВрднрд╡ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ
1) рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди - рддрд╛рдХрд┐ рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП;
2) рдХреАрдорддреЛрдВ рдХреА рд╕рд░рдгреА рдореЗрдВ рдПрдХ рдирдХрд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреБрдВрдЬреА рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЧреНрд░рд╛рд╣рдХ рдкрд░ рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдВ;
3) рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рд░реНрд╡рд░ рд╣рдореЗрд╢рд╛ рдмрд┐рдВрджреБ 2 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо "рдХреБрдЯрд┐рд▓" рддрд░реАрдХреЗ рд╕реЗ рдореИрдк рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред
рддреАрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдмреЗрд╣рддрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ рдФрд░ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рдФрд░ рдмрд╣реБрдд рдХрдо рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕реНрдЯреИрдХрдУрд╡рд░рдлрд╝реНрд▓реЛ рдкрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХреАрдорддреЗрдВ рд╕рд░рдгреА рдХреЛ APACHE_MAP рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕реЛрдкрд╡рд░ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
<?php $result = ...; $result['prices'] = new SoapVar($result['prices'], APACHE_MAP); return $result; ?>
рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ рд▓реМрдЯреЗрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд░реИрдкрд░ рдХреЗ рд╕рд╛рде, рд╕реЛрдкрд╕реЗрд╡рд░ рдЕрдм рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдирдХреНрд╢рд╛ рджреЗрддрд╛ рд╣реИ - рдФрд░ рдЦрд╛рд▓реА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП:
<item> <key xsi:type="xsd:string">prices</key> <value xsi:type="ns2:Map"/> </item>
рдФрд░ "рдХреНрд▓рд╛рд╕рд┐рдХ" рдЧреИрд░-рдЦрд╛рд▓реА рдХреЗ рд▓рд┐рдП:
<item> <key xsi:type="xsd:string">prices</key> <value xsi:type="ns2:Map"> <item> <key xsi:type="xsd:int">0</key> <value xsi:type="xsd:int">100</value> </item> <item> <key xsi:type="xsd:int">1</key> <value xsi:type="xsd:int">200</value> </item> <item> <key xsi:type="xsd:int">2</key> <value xsi:type="xsd:int">300</value> </item> </value> </item>
рд╕рдорд╛рдзрд╛рди рдХреА рдЕрдВрддрд┐рдо рд╕рд╛рджрдЧреА рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ Google рдХреА рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕реНрдерд┐рддрд┐ рд╕реНрд╡рдпрдВ рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧ рд░рд╣реА рдереА, рдФрд░ рддреНрд░реБрдЯрд┐ рдХрд╛рдлреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдереА рдФрд░ рд╡рд┐рд╡рд░рдг рдХреЗ рдпреЛрдЧреНрдп рдереА, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред
рдЬрд╛рдирдХрд╛рд░реА рдХреА рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП: рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░: PHP 5.3, Zend рдлреНрд░реЗрдорд╡рд░реНрдХ 1.11, рдореИрдВрдиреЗ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред