Authmatic SOAP_Value generation
| From: | Rob Booth | Date: | Fri, 25 Apr 2003 00:43:45 +0000 |
| Subject: | Authmatic SOAP_Value generation | ||
| Groups: | php.soap | ||
| Request: | Send a blank email to php-soap+get-572@lists.php.net to get a copy of this message | ||
So after reading through Dmitri's disco_server.php example and thinking that
the way he is going about building his SOAP_Value objects for return is very
tedious I set about tyring to come up with a way of having my code build
them for me.
Attached the code for PEAR::SOAP server, this is what I was using to test my
concepts out on. In the class there is a method buildSOAP(). This method
takes in the name of a userdefined, or XML standard, data type and an array
and returns the built SOAP_Value. I'd appreciate it if anyone who is
interested could take a look at it and give me some feedback. I don't like
the way the code currently works, too many decisions and duplicate effort.
Please review it and let me know what you think, definately let me know if
you find any problems or solutions. I'm hoping that something like this can
make it into the library so that users won't have to try to generate those
cumbersome objects on there own and can just concern themselves with
building there servers.
Thanks,
Rob
begin 666 pear-server.php
M/#]P:' *(" @<F5Q=6ER95]O;F-E*"=33T%0+U-E<G9E<BYP:' G*3L*"B @
M(&-L87-S(%-/05!?2&5L;&]?4V5R=F5R('L*(" @(" @=F%R("1?7V1I<W!A
M=&-H7VUA<" ](&%R<F%Y*"D["B @(" @('9A<B
D7U]T>7!E9&5F(#T@87)R
M87DH*3L*"B @(" @(&9U;F-T:6]N(%-/05!?2&5L;&]?4V5R=F5R*"D@>PH@
M(" @(" @(" D=&AI<RT^7U]D:7-P871C:%]M87!;)VAE;&QO5V]R;&0G72 ]
M"B @(" @(" @("
@(&%R<F%Y*"=I;B<]/F%R<F%Y*"=I;FUE<W-A9V4G/3XG
M<W1R:6YG)RDL"B @(" @(" @(" @(" @("
@("=O=70G/3YA<G)A>2@G<F5S
M=6QT)ST^)W-T<FEN9R<I*3L*"B @(" @(" @("1T:&ES+3Y?7V1I<W!A=&-H
M7VUA<%LG8V]M<&QE>%1E<W0G72 ]"B @(" @(" @("
@(&%R<F%Y*"=I;B<]
M/F%R<F%Y*"=O;F4G(#T^("=I;G0G+" G='=O)R ]/B G:6YT)RDL"B @(" @
M(" @(" @(" @(" @("=O=70G/3YA<G)A>2@G<F5S=6QT)ST^"B @("
@(" @
M(" @(" @(" @(" @(" @(" @(" @("
G>W5R;CI33T%07TAE;&QO7U-E<G9E
M<GU3='5F9B<I*3L*"B @(" @("
@("1T:&ES+3Y?7V1I<W!A=&-H7VUA<%LG
M87)R87E497-T)UT@/0H@(" @(" @(" @("!A<G)A>2@G:6XG/3YA<G)A>2@I
M+ H@(" @(" @(" @(" @(" @("
G;W5T)ST^87)R87DH)W)E<W5L="<@/3X*
M(" @(" @(" @(" @(" @(" @(" @(" @(" @("
@("=[=7)N.E-/05!?2&5L
M;&]?4V5R=F5R?4%R<F%Y5&5S=%)E<W5L="<I*3L*"B @(" @("
@("1T:&ES
M+3Y?7V1I<W!A=&-H7VUA<%LG;F5S=&5D5&5S="==(#T*(" @(" @("
@(" @
M87)R87DH)VEN)ST^87)R87DH*2P*(" @(" @(" @(" @(" @(" @)V]U="<]
M/F%R<F%Y*"=R97-U;'0G(#T^"B @(" @(" @(" @(" @(" @("
@(" @(" @
M(" @(" G>W5R;CI33T%07TAE;&QO7U-E<G9E<GU.97-T961497-T4F5S=6QT
M)RDI.PH*(" @(" @(" @)'1H:7,M/E]?='EP961E9ELB4W1U9F8B72 ]"B @
M(" @(" @(" @(&%R<F%Y*"=O;F4G(#T^("=I;G0G+ H@(" @("
@(" @(" @
M(" @(" G='=O)R ]/B G:6YT)RP*(" @(" @(" @(" @(" @("
@)V]N92UT
M=V\G(#T^("=S=')I;F<G+ H@(" @(" @(" @(" @(" @("
G='=O+6]N92<@
M/3X@)W-T<FEN9R<I.PH*(" @(" @(" @)'1H:7,M/E]?='EP961E9ELB07)R
M87E/9E-T=69F(ET@/0H@(" @(" @(" @("!A<G)A>2AA<G)A>2@G:71E;2<@
M/3X@)WMU<FXZ4T]!4%](96QL;U]397)V97)]4W1U9F8G*2D["@H@(" @(" @
M(" D=&AI<RT^7U]T>7!E9&5F6R)!<G)A>51E<W1297-U;'0B72 ]"B
@(" @
M(" @(" @(&%R<F%Y*"=3='5F9D%R<F%Y)R ]/B G>W5R;CI33T%07TAE;&QO
M7U-E<G9E<GU!<G)A>4]F4W1U9F8G*3L*"B @(" @(" @("1T:&ES+3Y?7W1Y
M<&5D969;(DYE<W1E9%1E<W1297-U;'0B72 ]"B @(" @(" @("
@(&%R<F%Y
M*"=T:71L92<@/3X@)W-T<FEN9R<L"B @(" @(" @(" @(" @("
@("=.97-T
M9613=')U8W0Q)R ]/B G>W5R;CI33T%07TAE;&QO7U-E<G9E<GU3='5F9B<L
M"B @(" @(" @(" @(" @(" @("=.97-T9613=')U8W0R)R ]/B
G>W5R;CI3
M3T%07TAE;&QO7U-E<G9E<GU3='5F9B<I.PH@(" @("!]"@H@("
@("!F=6YC
M=&EO;B!S=')I<$YA;65S<&%C92@D;F%M92D@>PH@(" @(" @("
D<F5T5F%L
M(#T@)&YA;64["B @(" @(" @(&EF("@D;F%M92 F)B D;F%M95LP72 ]/2 B
M>R(I('L*(" @(" @(" @("
M>@<')E9U]M871C:"@G+UQ[*"XJ/RE<?2@N*BDO
M)RPD;F%M92P@)&TI.PH@(" @(" @(" @(" D<F5T5F%L(#T@)&U;,ET["B @
M(" @(" @('T*(" @(" @(" @<F5T=7)N("1R971686P["B @("
@('T*"B @
M("
@("\O(%1A:V5S(&EN(&%N(&%S<V]C:6%T:79E(&%R<F%Y(&%N9"!R971U
M<FYS(&$@<')O<&5R;'D@9F]R;65D"B @(" @("\O(%-/05
@;V)J96-T+@H@
M(" @("!F=6YC=&EO;B!B=6EL9%-/05 H)&YA;64L("1V86QU92D@>PH@(" @
M(" @(" D<F5T5F%L(#T@3E5,3#L*"B @(" @("
@(&EF("AI<W-E="@D=&AI
M<RT^7U]T>7!E9&5F6R1N86UE72DI('L*(" @(" @(" @(" @:68@*&ES7V%R
M<F%Y*"1T:&ES+3Y?7W1Y<&5D969;)&YA;65=6S!=*2D@>PH@(" @(" @("
@
M(" @(" D<W5B07)R87D@/2 D=&AI<RT^7U]T>7!E9&5F6R1N86UE75LP73L*
M(" @(" @(" @(" @(" @9F]R96%C:"@D<W5B07)R87D@87,@)&%.86UE(#T^
M("1A5'EP92D@>PH@(" @(" @(" @(" @(" @("
D851Y<&5.86UE(#T@)'1H
M:7,M/G-T<FEP3F%M97-P86-E*"1A5'EP92D["B @(" @(" @(" @("
@(" @
M(&9O<F5A8V@H)'9A;'5E(&%S("1R;W<I('L*(" @(" @("
@(" @(" @(" @
M(" @:68@*&ES<V5T*"1T:&ES+3Y?7W1Y<&5D969;)&%4>7!E3F%M95TI*2&%4>7!E3F%M92P*(" @(" @(" @(" @(" @(" @(" @("
@(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("
@(" @)')O=RDI.PH@
M(" @(" @(" @(" @(" @(" @("!](&5L<V4@>PH@("
@(" @(" @(" @(" @
M(" @(" @(" D<F5T5F%L6UT@/2!N97<@4T]!4%]686QU92@D84YA;64L"B @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("
@(" @(" @(" @(" @
M(" D851Y<&4L"B @(" @(" @(" @(" @(" @(" @("
@(" @(" @(" @(" @
M(" @(" @(" @(" @(" D<F]W*3L*(" @(" @(" @(" @("
@(" @(" @?0H@
M(" @(" @(" @(" @(" @("!]"B @(" @(" @(" @("
@('T*(" @(" @(" @
M(" @?2!E;'-E('L*(" @(" @(" @(" @("
@9F]R96%C:"@D=&AI<RT^7U]T
M>7!E9&5F6R1N86UE72!A<R D;F%M92 ]/B D='EP92D@>PH@(" @(" @(" @
M(" @(" @(" D='EP94YA;64@/2 D=&AI<RT^<W1R:7!.86UE<W!A8V4H)'1Y
M<&4I.PH@(" @(" @(" @(" @(" @("!I9B
H:7-S970H)'9A;'5E6R1N86UE
M72DI('L*(" @(" @(" @(" @(" @(" @("
@:68@*&ES<V5T*"1T:&ES+3Y?
M7W1Y<&5D969;)'1Y<&5.86UE72DI('L*(" @(" @(" @(" @("
@(" @(" @
M(" @:68@*&-O=6YT*"1T:&ES+3Y?7W1Y<&5D969;)'1Y<&5.86UE72D@/B Q
M*2'1Y<&4L"B @(" @(" @(" @(" @(" @("
@(" @(" @(" @(" @
M(" @(" @(" @(" @("1T:&ES+3YB=6EL9%-/05 H)'1Y<&5.86UE+
H@(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("
@(" @(" @(" @(" @
M(" @(" @(" @(" @("1V86QU95LD;F%M95TI*3L*(" @(" @(" @("
@(" @
M(" @(" @(" @?2!E;'-E('L*(" @(" @(" @(" @("
@(" @(" @(" @(" @
M)')E=%9A;" ]( H@(" @(" @(" @(" @(" @(" @(" @("
@(" @("!N97<@
M4T]!4%]686QU92@D;F%M92P*(" @(" @(" @(" @(" @(" @(" @("
@(" @
M(" @(" @(" @(" @(" @(" @)'1Y<&4L"B @(" @("
@(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @("
@("1T:&ES+3YB=6EL9%-/05 H)'1Y
M<&5.86UE+ H@(" @(" @(" @(" @(" @(" @(" @(" @("
@(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @("
@("1V86QU95LD;F%M95TI*3L*(" @
M(" @(" @(" @(" @(" @(" @(" @?0H@(" @(" @("
@(" @(" @(" @("!]
M(&5L<V4@>PH@(" @(" @(" @(" @(" @(" @(" @("
D<F5T5F%L6UT@/2!N
M97<@4T]!4%]686QU92@D;F%M92P*(" @(" @(" @(" @(" @(" @("
@(" @
M(" @(" @(" @(" @(" @(" @(" @(" @("1T>7!E+ H@("
@(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("
@(" @)'9A;'5E6R1N
M86UE72D["B @(" @(" @(" @(" @(" @(" @('T*(" @("
@(" @(" @(" @
M(" @?2!E;'-E('L*(" @(" @(" @(" @(" @(" @("
@)')E=%9A;%M=(#T@
M;F5W(%-/05!?5F%L=64H)&YA;64N("1T>7!E+"!.54Q,*3L*(" @(" @(" @
M(" @(" @(" @?0H@(" @(" @(" @(" @("!]"B @("
@(" @(" @('T*(" @
M(" @(" @?2!E;'-E('L*(" @(" @(" @(" @)')E=%9A;"
](&YE=R!33T%0
M7U9A;'5E*"1N86UE+"!.54Q,+" D=F%L=64I.PH@(" @(" @("!]( H@("
@
M(" @("!R971U<FX@)')E=%9A;#L@"B @(" @('T*"B @("
@(&9U;F-T:6]N
M(&AE;&QO5V]R;&0H)&EN;65S<V%G92D@>PH@(" @(" @("!I9B
H)&EN;65S
M<V%G92 ]/2 G)RD@>PH@(" @(" @(" @(" D9F%U;'0@/2!N97<@4T]!4%]&
M875L="@G66]U(&UU<W0@<W5P<&QY(&$@=F%L:60@<W1R:6YG(2<L(#$R,S0U
M*3L*(" @(" @(" @(" @<F5T=7)N("1F875L="T^;65S<V%G92@I.PH@("
@
M(" @("!](&5L<V4@>PH@(" @(" @("
@("!R971U<FX@)'1H:7,M/F)U:6QD
M4T]!4"@B<W1R:6YG(BP@(DAE;&QO("1I;FUE<W-A9V4A(BD["B @(" @(" @
M('T*(" @(" @?0H*(" @("
@9G5N8W1I;VX@;F5S=&5D5&5S="@I('L*(" @
M(" @(" @)&YE<W0Q(#T@87)R87DH)V]N92<@/3X@,2P*(" @(" @(" @("
@
M(" @(" @(" @(" @)W1W;R<@/3X@,BP*(" @(" @(" @(" @("
@(" @(" @
M(" @)V]N92UT=V\G(#T^("<Q(#(G+ H@(" @(" @(" @(" @(" @("
@(" @
M(" G='=O+6]N92<@/3X@)S(@,2<I.PH@(" @(" @(" D;F5S=#(@/2!A<G)A
M>2@G;VYE)R ]/B U+ H@(" @(" @(" @(" @(" @(" @(" @("
M>G='=O)R ]
M/B V+ H@(" @(" @(" @(" @(" @(" @(" @("
G;VYE+71W;R<@/3X@)S4@
M-B<L"B @(" @(" @(" @(" @(" @(" @(" @("=T=V\M;VYE)R
]/B G-B U
M)RD["B @(" @(" @("1R971686P@/2!A<G)A>2@G3F5S=&5D4W1R=6-T,2<@
M/3X@)&YE<W0Q+ H@(" @(" @(" @(" @(" @(" @(" @("
@)TYE<W1E9%-T
M<G5C=#(G(#T^("1N97-T,BP*(" @(" @(" @(" @(" @(" @("
@(" @("=T
M:71L92<@/3X@)U1E<W1I;F<@36EX960@5'EP97,@*'5S97(O6$U,*2<I.PH*
M(" @(" @(" @<F5T=7)N(&YE=R!33T%07U9A;'5E*"=R97-U;'0G+
H@(" @
M(" @(" @(" @(" @(" @(" @(" @(" @("
@)WMU<FXZ4T]!4%](96QL;U]3
M97)V97)]3F5S=&5D5&5S=%)E<W5L="<L"B @(" @(" @(" @("
@(" @(" @
M(" @(" @(" @(" D=&AI<RT^8G5I;&133T%0*"=.97-T961497-T4F5S=6QT
M)RP@)')E=%9A;"DI.R *(" @(" @?0H*(" @(" @9G5N8W1I;VX@87)R87E4
M97-T*"D@>PH@(" @(" @(" D<F5T5F%L(#T@87)R87DH*3L*(" @(" @("
@
M)'-T=69F(#T@87)R87DH*3L*"B @(" @(" @(&9O<B H)&D@/2 P.R D:2 \
M(#4[("1I*RLI('L*(" @(" @(" @(" @)'@@/2 D:2 K(#$["B @("
@(" @
M(" @("1S='5F9EM=(#T@87)R87DH)V]N92<@/3X@)&DL"B @(" @("
@(" @
M(" @(" @(" @(" @(" @(" @)W1W;R<@/3X@)'@L"B @("
@(" @(" @(" @
M(" @(" @(" @(" @(" @)V]N92UT=V\G(#T^("(D:2 D>"(L"B
@(" @(" @
M(" @(" @(" @(" @(" @(" @(" @)W1W;RUO;F4G(#T^("(D>"
D:2(I.PH*
M(" @(" @(" @?0H*(" @(" @(" @)')E=%9A;"
](&%R<F%Y*"=3='5F9D%R
M<F%Y)R ]/B D<W1U9F8I.PH@(" @(" @("!R971U<FX@;F5W(%-/05!?5F%L
M=64H)W)E<W5L="<L"B @(" @(" @(" @(" @(" @(" @("
@(" @(" @(" G
M>W5R;CI33T%07TAE;&QO7U-E<G9E<GU!<G)A>51E<W1297-U;'0G+ H@(" @
M(" @(" @(" @(" @(" @(" @(" @(" @("
@)'1H:7,M/F)U:6QD4T]!4"@G
M07)R87E497-T4F5S=6QT)RP@)')E=%9A;"DI.PH*+RH*(" @(" @(" @<F5T
M=7)N(&YE=R!33T%07U9A;'5E* H@(" @(" @(" @(" G<F5S=6QT)RP*(" @
M(" @(" @(" @)WMU<FXZ4T]!4%](96QL;U]397)V97)]07)R87E497-T4F5S
M=6QT)RP*(" @(" @(" @(" @(&YE=R!33T%07U9A;'5E* H@(" @("
@(" @
M(" @(" @)U-T=69F07)R87DG+ H@(" @(" @(" @(" @(" @)WMU<FXZ4T]!
M4%](96QL;U]397)V97)]07)R87E/9E-T=69F)RP*(" @(" @(" @(" @(" @
M("1T:&ES+3YB=6EL9%-/05 H)T%R<F%Y3V93='5F9B<L("1S='5F9BDI*3L*
M*B\*+R\@(" @(" @("!R971U<FX@)'1H:7,M/F)U:6QD4T]!4"@G07)R87E4
M97-T4F5S=6QT)RP@)')E=%9A;"D["@HO*@H@(" @(" @("!F;W(@*"1I(#T@
M,#L@)&D@/" U.R D:2LK*2!["B @(" @(" @(" @("1X(#T@)&D@*R Q.PH@
M(" @(" @(" @(" D<W1U9F9;)&E=(#T*(" @(" @(" @("
@(" @;F5W(%-/
M05!?5F%L=64H"B @(" @(" @(" @(" @(" @("=I=&5M)RP*("
@(" @(" @
M(" @(" @(" @)WMU<FXZ4T]!4%](96QL;U]397)V97)]4W1U9F8G+ H@(" @
M(" @(" @(" @(" @("
D=&AI<RT^8G5I;&133T%0*")3='5F9B(L(&%R<F%Y
M*"=O;F4G(#T^("1I+ H@(" @(" @(" @(" @(" @(" @("
@(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @)W1W;R<@/3X@)&D@*R Q+
H@(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("
@(" @(" @(" @(" @
M)V]N92UT=V\G(#T^("(D:2 D>"(L"B @(" @(" @(" @(" @("
@(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @("
G='=O+6]N92<@/3X@(B1X
M("1I(BDI*3L*(" @(" @(" @?0H*(" @(" @("
@<F5T=7)N(&YE=R!33T%0
M7U9A;'5E* H@(" @(" @(" @(" G<F5S=6QT)RP*(" @(" @("
@(" @)WMU
M<FXZ4T]!4%](96QL;U]397)V97)]07)R87E497-T4F5S=6QT)RP*(" @(" @
M(" @(" @(&YE=R!33T%07U9A;'5E* H@(" @(" @(" @(" @("
@)U-T=69F
M07)R87DG+ H@(" @(" @(" @(" @(" @)WMU<FXZ4T]!4%](96QL;U]397)V
M97)]07)R87E/9E-T=69F)RP*(" @(" @(" @(" @(" @("1S='5F9BDI.PHJ
M+PH@(" @("!]"@H@("
@("!F=6YC=&EO;B!C;VUP;&5X5&5S="@D;VYE+" D
M='=O*2!["B @(" @(" @("1R971686P@/2!A<G)A>2@B;VYE(B ]/B D;VYE
M+ H@(" @(" @(" @(" @(" @(" @(" @("
@(G1W;R(@/3X@)'1W;RP*(" @
M(" @(" @(" @(" @(" @(" @(" @(")O;F4M='=O(B ]/B
D;VYE("X@(B B
M("X@)'1W;RP*(" @(" @(" @(" @(" @(" @(" @("
@(")T=V\M;VYE(B ]
M/B D='=O("X@(B B("X@)&]N92D["@H@(" @("
@("!R971U<FX@)'1H:7,M
M/F)U:6QD4T]!4"@B4W1U9F8B+" D<F5T5F%L*3L*(" @(" @?0H@("!]"@H@
M(" D<V5R=F5R(#T@;F5W(%-/05!?4V5R=F5R*"D["B @("1H96QL;U-E<G9E
M<B ](&YE=R!33T%07TAE;&QO7U-E<G9E<B@I.PH*(" @)'-E<G9E<BT^861D
M3V)J96-T34%P*"1H96QL;U-E<G9E<BP@)W5R;CI33T%07TAE;&QO7U-E<G9E
M<B<I.PH*(" @:68@*&ES<V5T*"1?4T525D526R=215%515-47TU%5$A/1"==
M*2 F)@H@(" @(" @(" @(" H)%]315)615);)U)%455%4U1?34542$]$)UT@
M/3T@)U!/4U0G*2D@>PHO+R @(" @("1S97)V97(M/F)I;F0H(FAT=' Z+R]L
M;V-A;&AO<W0B("X@)%]315)615);(E!(4%]314Q&(ET@+B B/W=S9&PB*3L*
M(" @(" @)'-E<G9E<BT^<V5R=FEC92@D2%144%]205=?4$]35%]$051!*3L*
M(" @?2!E;'-E('L*(" @(" @<F5Q=6ER95]O;F-E*"=33T%0+T1I<V-O+G!H
M<"<I.PH@(" @(" D9&ES8V\@/2!N97<@4T]!4%]$:7-C;U]397)V97(H)'-E
M<G9E<BP@)U-/05!?2&5L;&]?4V5R=F5R)RD["B @(" @(&AE861E<B@B0V]N
M=&5N="UT>7!E.B!T97AT+WAM;"(I.PH@(" @(" @(" @(" @("
@(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("
@(" @(" @(" @(" @
M(" @(" @(" @(" @( H@(" @("!I9B H:7-S970H)%]315)615);)U%515)9
M7U-44DE.1R==*2 F)@H@(" @(" @(" @(" @(" H<W1R8V%S96-M<"@D7U-%
M4E9%4ELG455%4EE?4U1224Y')UTL("=W<V1L)RD@/3T@,"DI('L*(" @(" @
M(" @96-H;R D9&ES8V\M/F=E=%=31$PH*3L*(" @(" @?2!E;'-E('L*(" @
M(" @(" @96-H;R D9&ES8V\M/F=E=$1)4T-/*"D["B @(" @('T*(" @?0H*
.(" @97AI="@I.PH_/@H`
`
end