<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: WSDL + PHP = WSDLDocument</title>
	<atom:link href="http://www.renandelima.com/wsdl-php-wsdldocument/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.renandelima.com/wsdl-php-wsdldocument/</link>
	<description>até que nem tanto esotérico assim</description>
	<pubDate>Mon, 06 Feb 2012 15:44:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: Schirkan</title>
		<link>http://www.renandelima.com/wsdl-php-wsdldocument/#comment-1318</link>
		<dc:creator>Schirkan</dc:creator>
		<pubDate>Sat, 13 Aug 2011 23:23:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.renandelima.com/?p=57#comment-1318</guid>
		<description>Hello,

if you have an object with an array of objects, the objects are transfered as simple structs.

Example:

class Person
{
    /**
     * @var string
     */
    public $name = '';
    /**
     * @var Address[]
     */
    public $address = array();
}

class Address
{
 ...
}

The created wsdl contains a definition for "AddressArray" but not for the class "Address" an its members.

I have found a simple fix for this - in method createType():

        # create the arrays concerned depth
        if ( $iArrayDepth &#62; 0 )
        {
            // --- Fix for Array of Objects
            $this-&#62;createType($sRawType);
            // --- end

            $sNameSpace = "tns";
            for ( ; $iArrayDepth &#62; 0; $iArrayDepth-- )
            {
                $sType = $this-&#62;createArrayType( $sType );
            }
        }</description>
		<content:encoded><![CDATA[<p>Hello,</p>
<p>if you have an object with an array of objects, the objects are transfered as simple structs.</p>
<p>Example:</p>
<p>class Person<br />
{<br />
    /**<br />
     * @var string<br />
     */<br />
    public $name = &#8221;;<br />
    /**<br />
     * @var Address[]<br />
     */<br />
    public $address = array();<br />
}</p>
<p>class Address<br />
{<br />
 &#8230;<br />
}</p>
<p>The created wsdl contains a definition for &#8220;AddressArray&#8221; but not for the class &#8220;Address&#8221; an its members.</p>
<p>I have found a simple fix for this - in method createType():</p>
<p>        # create the arrays concerned depth<br />
        if ( $iArrayDepth &gt; 0 )<br />
        {<br />
            // &#8212; Fix for Array of Objects<br />
            $this-&gt;createType($sRawType);<br />
            // &#8212; end</p>
<p>            $sNameSpace = &#8220;tns&#8221;;<br />
            for ( ; $iArrayDepth &gt; 0; $iArrayDepth&#8211; )<br />
            {<br />
                $sType = $this-&gt;createArrayType( $sType );<br />
            }<br />
        }</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thiago Mata</title>
		<link>http://www.renandelima.com/wsdl-php-wsdldocument/#comment-1305</link>
		<dc:creator>Thiago Mata</dc:creator>
		<pubDate>Fri, 07 Aug 2009 22:36:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.renandelima.com/?p=57#comment-1305</guid>
		<description>sugiro a adicao do seguinte método

    public function handle()
    {
        header ("content-type: text/xml");
        if( $_SERVER[ "REQUEST_METHOD" ] == "POST" )
        {
            $objServer = new SoapServer( null , array( "uri" =&#62; $_SERVER[ "SERVER_NAME" ] . $_SERVER[ "REQUEST_URI" ] ) );
            $objServer-&#62;setClass( $this-&#62;oClass-&#62;getName() );
            $objServer-&#62;handle();
        }
        else
        {
            echo $this-&#62;saveXml();
        }
    }

pois o codigo na chamada


$objServer = new WSDLDocument( "MinhaClasseWS" );
$objServer-&#62;handle();

Pode então lidar tanto com o wsdl quanto com as requisições ;)</description>
		<content:encoded><![CDATA[<p>sugiro a adicao do seguinte método</p>
<p>    public function handle()<br />
    {<br />
        header (&#8221;content-type: text/xml&#8221;);<br />
        if( $_SERVER[ "REQUEST_METHOD" ] == &#8220;POST&#8221; )<br />
        {<br />
            $objServer = new SoapServer( null , array( &#8220;uri&#8221; =&gt; $_SERVER[ "SERVER_NAME" ] . $_SERVER[ "REQUEST_URI" ] ) );<br />
            $objServer-&gt;setClass( $this-&gt;oClass-&gt;getName() );<br />
            $objServer-&gt;handle();<br />
        }<br />
        else<br />
        {<br />
            echo $this-&gt;saveXml();<br />
        }<br />
    }</p>
<p>pois o codigo na chamada</p>
<p>$objServer = new WSDLDocument( &#8220;MinhaClasseWS&#8221; );<br />
$objServer-&gt;handle();</p>
<p>Pode então lidar tanto com o wsdl quanto com as requisições <img src='http://www.renandelima.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Renan de Lima</title>
		<link>http://www.renandelima.com/wsdl-php-wsdldocument/#comment-1296</link>
		<dc:creator>Renan de Lima</dc:creator>
		<pubDate>Mon, 13 Apr 2009 03:26:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.renandelima.com/?p=57#comment-1296</guid>
		<description>Hebert,

o jeito que você está correto, só que não é necessário indicar o option "uri" no array enviado como segundo parâmetro do construtor do SoapServer

você ainda pode deixar o wsdl gerfado e indicar somente um caminho para o arquivo no servidor, sem a necessidade de uma requisição http, mesmo que seja localhost

obrigado pelo contato</description>
		<content:encoded><![CDATA[<p>Hebert,</p>
<p>o jeito que você está correto, só que não é necessário indicar o option &#8220;uri&#8221; no array enviado como segundo parâmetro do construtor do SoapServer</p>
<p>você ainda pode deixar o wsdl gerfado e indicar somente um caminho para o arquivo no servidor, sem a necessidade de uma requisição http, mesmo que seja localhost</p>
<p>obrigado pelo contato</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Herbert</title>
		<link>http://www.renandelima.com/wsdl-php-wsdldocument/#comment-1295</link>
		<dc:creator>Herbert</dc:creator>
		<pubDate>Sun, 12 Apr 2009 18:46:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.renandelima.com/?p=57#comment-1295</guid>
		<description>mas a instância da classe servidor, ficaria como?
eu tentei assim:
$server = new SoapServer("http://meusite.com.br/webservice/teste_wsdldocument.php?wsdl", array(
'uri' =&#62; 'http://'.$_SERVER["HTTP_HOST"].'/loja/webservice',
'encoding'=&#62;'ISO-8859-1')
								);
tá certo assim?
sendo que o arquivo "teste_wsdldocument.php" contém o código de geração do Xml:
saveXml();
?&#62;</description>
		<content:encoded><![CDATA[<p>mas a instância da classe servidor, ficaria como?<br />
eu tentei assim:<br />
$server = new SoapServer(&#8221;http://meusite.com.br/webservice/teste_wsdldocument.php?wsdl&#8221;, array(<br />
&#8216;uri&#8217; =&gt; &#8216;http://&#8217;.$_SERVER["HTTP_HOST"].&#8217;/loja/webservice&#8217;,<br />
&#8216;encoding&#8217;=&gt;&#8217;ISO-8859-1&#8242;)<br />
								);<br />
tá certo assim?<br />
sendo que o arquivo &#8220;teste_wsdldocument.php&#8221; contém o código de geração do Xml:<br />
saveXml();<br />
?&gt;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Renan de Lima</title>
		<link>http://www.renandelima.com/wsdl-php-wsdldocument/#comment-1266</link>
		<dc:creator>Renan de Lima</dc:creator>
		<pubDate>Tue, 19 Aug 2008 17:04:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.renandelima.com/?p=57#comment-1266</guid>
		<description>Daniel e demais, optei por hospedar o projeto no GoogleCode. A url é:

http://code.google.com/p/wsdldocument

Lá tem todas as versões, documentação e dicas de uso da biblioteca.

Obrigado pela sugestão.</description>
		<content:encoded><![CDATA[<p>Daniel e demais, optei por hospedar o projeto no GoogleCode. A url é:</p>
<p><a href="http://code.google.com/p/wsdldocument" rel="nofollow">http://code.google.com/p/wsdldocument</a></p>
<p>Lá tem todas as versões, documentação e dicas de uso da biblioteca.</p>
<p>Obrigado pela sugestão.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Costa</title>
		<link>http://www.renandelima.com/wsdl-php-wsdldocument/#comment-1265</link>
		<dc:creator>Daniel Costa</dc:creator>
		<pubDate>Tue, 19 Aug 2008 16:48:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.renandelima.com/?p=57#comment-1265</guid>
		<description>Renan,

Porque você não divulga essa classe no PHP Classes?

Inclusive por lá eu poderia acompanhar as atualizações que você venha a fazer nela.

Fica a sugestão,
Um abraço!</description>
		<content:encoded><![CDATA[<p>Renan,</p>
<p>Porque você não divulga essa classe no PHP Classes?</p>
<p>Inclusive por lá eu poderia acompanhar as atualizações que você venha a fazer nela.</p>
<p>Fica a sugestão,<br />
Um abraço!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Renan de Lima</title>
		<link>http://www.renandelima.com/wsdl-php-wsdldocument/#comment-1262</link>
		<dc:creator>Renan de Lima</dc:creator>
		<pubDate>Wed, 06 Aug 2008 19:11:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.renandelima.com/?p=57#comment-1262</guid>
		<description>Legal Cláudio,

Eu inclusive também já alterei algumas coisas, em breve deve sair a 0.2 Os métodos estáticos estão indo pro wsdl. Outra novidade que virá é a documentação do método e da classe que serão incluídos no wsdl.

Quanto a folha de estilo xsl eu fiz assim:

# gera wsdl
$oWsdl = new WSDLDocument( "Classe", "url" );

# aplica estilo
$oEstilo = $oWsdl-&gt;createProcessingInstruction( "xml-stylesheet", "type=\"text/xsl\" href=\"url.xsl\"" );
$oWsdl-&gt;insertBefore( $oEstilo, $oWsdl-&gt;firstChild );

dessa forma não precisei alterar a classe

vou dar uma olhada nas suas alterações, vamos conversar pra incluir suas novidades e outras funcionalidades na biblioteca</description>
		<content:encoded><![CDATA[<p>Legal Cláudio,</p>
<p>Eu inclusive também já alterei algumas coisas, em breve deve sair a 0.2 Os métodos estáticos estão indo pro wsdl. Outra novidade que virá é a documentação do método e da classe que serão incluídos no wsdl.</p>
<p>Quanto a folha de estilo xsl eu fiz assim:</p>
<p># gera wsdl<br />
$oWsdl = new WSDLDocument( &#8220;Classe&#8221;, &#8220;url&#8221; );</p>
<p># aplica estilo<br />
$oEstilo = $oWsdl->createProcessingInstruction( &#8220;xml-stylesheet&#8221;, &#8220;type=\&#8221;text/xsl\&#8221; href=\&#8221;url.xsl\&#8221;" );<br />
$oWsdl->insertBefore( $oEstilo, $oWsdl->firstChild );</p>
<p>dessa forma não precisei alterar a classe</p>
<p>vou dar uma olhada nas suas alterações, vamos conversar pra incluir suas novidades e outras funcionalidades na biblioteca</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cláudio Esperança</title>
		<link>http://www.renandelima.com/wsdl-php-wsdldocument/#comment-1261</link>
		<dc:creator>Cláudio Esperança</dc:creator>
		<pubDate>Wed, 06 Aug 2008 17:17:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.renandelima.com/?p=57#comment-1261</guid>
		<description>Olá Renan.

Obrigado por esta biblioteca... Faz precisamente o que disseste e de forma não intrusiva, excelente para o módulo de webservices que estou a desenvolver para o Moodle.

Tomei a liberdade de fazer algumas (pequenas) modificações na biblioteca: a primeira prende-se com a utilização do @method para documentar o que cada método de uma classe faz e inserir essa informação do wsdl; a segunda foi a inclusão da possibilidade de associar um xslt com o wsdl para que o navegador formate o output de acordo com este ficheiro.

Tomei a liberdade de colocar os ficheiros modificados no endereço http://rapidshare.com/files/135322692/WSDLDocument.tar.bz2 para que possas analisar se as alterações te interessam. Se não conseguires descarregar o ficheiro ou tiveres dúvidas sobre as modificações, envia-me uma mensagem de correio electrónico para endereço de email que associei a este comentário.

Obrigado mais uma vez por esta biblioteca.

Um abraço</description>
		<content:encoded><![CDATA[<p>Olá Renan.</p>
<p>Obrigado por esta biblioteca&#8230; Faz precisamente o que disseste e de forma não intrusiva, excelente para o módulo de webservices que estou a desenvolver para o Moodle.</p>
<p>Tomei a liberdade de fazer algumas (pequenas) modificações na biblioteca: a primeira prende-se com a utilização do @method para documentar o que cada método de uma classe faz e inserir essa informação do wsdl; a segunda foi a inclusão da possibilidade de associar um xslt com o wsdl para que o navegador formate o output de acordo com este ficheiro.</p>
<p>Tomei a liberdade de colocar os ficheiros modificados no endereço <a href="http://rapidshare.com/files/135322692/WSDLDocument.tar.bz2" rel="nofollow">http://rapidshare.com/files/135322692/WSDLDocument.tar.bz2</a> para que possas analisar se as alterações te interessam. Se não conseguires descarregar o ficheiro ou tiveres dúvidas sobre as modificações, envia-me uma mensagem de correio electrónico para endereço de email que associei a este comentário.</p>
<p>Obrigado mais uma vez por esta biblioteca.</p>
<p>Um abraço</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Webservice</title>
		<link>http://www.renandelima.com/wsdl-php-wsdldocument/#comment-1260</link>
		<dc:creator>Webservice</dc:creator>
		<pubDate>Tue, 29 Jul 2008 06:10:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.renandelima.com/?p=57#comment-1260</guid>
		<description>Now, if you wish to update your PHP then the best way will be to upgrade PHP, using the old configuration (php. &lt;a href="http://infosmith.org/webservice/" rel="nofollow"&gt;Webservice&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>Now, if you wish to update your PHP then the best way will be to upgrade PHP, using the old configuration (php. <a href="http://infosmith.org/webservice/" rel="nofollow">Webservice</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

