Prechádzať zdrojové kódy

[MANUAL] Brazilian Portuguese:

- delete outdated files, because this files seems to be more easy retranslate than update


git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@21192 44c647ce-9c0f-0410-b52a-842ac1e357ba
mauriciofauth 16 rokov pred
rodič
commit
083bce6201

+ 0 - 550
documentation/manual/pt-br/module_specs/Zend_Controller-FrontController.xml

@@ -1,550 +0,0 @@
-<sect1 id="zend.controller.front">
-    <title>O Front Controller</title>
-
-    <sect2 id="zend.controller.front.overview">
-        <title>Resumo</title>
-
-        <para>
-            <code>Zend_Controller_Front</code> implementa um <ulink
-                url="http://www.martinfowler.com/eaaCatalog/frontController.html">padrão Front
-                Controller</ulink> usado nas aplicações <ulink
-                url="http://pt-br.wikipedia.org/wiki/Model-view-controller">Model-View-Controller
-                (MVC)</ulink>. Seu objetivo é inicializar o ambiente de requisição,
-                roterizar as requisições que chegam, e despachalas para quaquel ações
-                descobertas; ele agrega alguma resposta e devolve-os quando o
-                processo é completo.
-        </para>
-
-        <para>
-            <code>Zend_Controller_Front</code> também implementa o <ulink
-                url="http://pt-br.wikipedia.org/wiki/Singleton_pattern">padrão Singleton
-            </ulink>, signicando que somente uma instancia dele pode estar disponivel
-            em qualquer tempo. Isto permite que ele atue também como um registro em
-            que outros objetos no processo de despacho possam usar.
-        </para>
-
-        <para>
-            <code>Zend_Controller_Front</code> registra uma <link
-                linkend="zend.controller.plugins">plugin de entrada</link> que
-            por si só, permite que vários eventos sejam disparados para
-            outros plugins observadores. Em muitos casos, isto permite ao
-            desenvolvedor a oportunidade para mudar o processo de despacho do
-            site sem a necessidade de extender o controlador de frente para
-            adicionar funcionalidade.
-        </para>
-
-        <para>
-            O mínimo necessário, que o controlador de frente necessita é um ou mais
-            caminho para os diretórios contendo os
-            <link linkend="zend.controller.action">controles de ação</link>
-            para poder fazer seu trabalho. Vários metódos também
-            podem ser invocados para mudar o ambiente do controlador de frente
-            e suas classe auxiliares.
-        </para>
-
-        <note>
-            <title>Comportamento padrão</title>
-            <para>
-                Por padrão, o controlador de frente carrega o <link
-                    linkend="zend.controller.plugins.standard.errorhandler">ErrorHandler</link>
-                plugin, bem como o  <link
-                    linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>
-                plugin de ação auxiliar. Faz isto para simplificar o controle de erro e
-                a apresentação de visulizadores em seus controles, repectivamente.
-            </para>
-
-            <para>
-                Para desabilitar o <code>ErrorHandler</code>, execute a seguinte
-                chamada em qualquer ponto antes de chamar <code>dispatch()</code>:
-            </para>
-
-            <programlisting role="php"><![CDATA[<?php
-// Disable the ErrorHandler plugin:
-$front->setParam('noErrorHandler', true);]]>
-            </programlisting>
-
-            <para>
-                Para desabilitar o <code>ViewRenderer</code>, faça o seguinte
-                antes de chamar <code>dispatch()</code>:
-            </para>
-
-            <programlisting role="php"><![CDATA[<?php
-// Disable the ViewRenderer helper:
-$front->setParam('noViewRenderer', true);]]>
-            </programlisting>
-        </note>
-    </sect2>
-
-    <sect2 id="zend.controller.front.methods.primary">
-        <title>Metódos Primários</title>
-
-        <para>
-            O controlador de frente possuí vários acessores para configurar
-            seu ambiente. Entretanto existem três metódos chaves primários
-            da funcionalidades do controlador de frente:
-        </para>
-
-        <sect3 id="zend.controller.front.methods.primary.getinstance">
-            <title>getInstance()</title>
-
-            <para>
-                <code>getInstance()</code> é usado para retirar a instancia
-                do controlador de frente. Como o controlador de frente
-                implementa o padrão Singleton, isto também é a unica
-                maneira possível de instanciar um objeto controlador de frente.
-            </para>
-
-            <programlisting role="php"><![CDATA[<?php
-$front = Zend_Controller_Front::getInstance();]]>
-            </programlisting>
-        </sect3>
-
-        <sect3 id="zend.controller.front.methods.primary.setcontrollerdirectory">
-            <title>setControllerDirectory() and addControllerDirectory</title>
-
-            <para>
-                <code>setControllerDirectory()</code> é usado para dizer <link
-                    linkend="zend.controller.dispatcher">ao despachador</link>
-                onde procurar os arquivos da classes dos <link
-                    linkend="zend.controller.action">controladores de ação</link>.
-                Ele aceita tanto um caminho único ou um array associativo
-                com pares módulo/caminho.
-            </para>
-
-            <para>
-                Alguns exemplos:
-            </para>
-
-            <programlisting role="php"><![CDATA[
-// Set the default controller directory:
-$front->setControllerDirectory('../application/controllers');
-
-// Set several module directories at once:
-$front->setControllerDirectory(array(
-    'default' => '../application/controllers',
-    'blog'    => '../modules/blog/controllers',
-    'news'    => '../modules/news/controllers',
-));
-
-// Add a 'foo' module directory:
-$front->addControllerDirectory('../modules/foo/controllers', 'foo');]]>
-            </programlisting>
-
-            <note>
-                <para>
-                    Se você usar <code>addControllerDirectory()</code>  sem um
-                    nome de módulo, ele irá configurar o diretório para o módulo
-                    <code>padrão</code> -- sobrescrevendo-o se ele já existir.
-                </para>
-            </note>
-
-            <para>
-                Você pode pegar a configuração corrente do diretório do
-                controlador usando <code>getControllerDirectory()</code>;
-                isto irá retornar um array de pares módulo/diretório.
-            </para>
-        </sect3>
-
-        <sect3 id="zend.controller.front.methods.primary.dispatch">
-            <title>dispatch()</title>
-
-            <para>
-                <code>dispatch(Zend_Controller_Request_Abstract $request = null,
-                    Zend_Controller_Response_Abstract $response = null)</code>
-                faz o trabalho pesado do controlador de frente. Ele pode
-                opcionalmente pegar um <link linkend="zend.controller.request">objeto
-                de requisição</link> e/ou um <link
-                    linkend="zend.controller.response">objeto de resposta</link>,
-                permitindo ao desenvolvedor passar a ele objetos personalizados
-                de cada.
-            </para>
-
-            <para>
-                Se nenhum objeto de requisição ou resposta for passado,
-                <code>dispatch()</code> irá procurar por objetos previamente
-                registrados e usa-los ou instanciar versões padrão para usar
-                em seus processos (em ambos os casos, o HTTP será usado como padrão).
-            </para>
-
-            <para>
-                Similarmente, <code>dispatch()</code> checa por uma
-                <link linkend="zend.controller.router">router</link> registrada e
-                um objetos de
-                <link linkend="zend.controller.dispatcher">dispacho</link>,
-                instanceando a versão padrão de cada um deles se não encontrar
-                nenhum.
-            </para>
-
-            <para>
-                O processo de dispacho possui três eventos distintos:
-            </para>
-
-            <itemizedlist>
-                <listitem><para>Roterização</para></listitem>
-                <listitem><para>Despacho</para></listitem>
-                <listitem><para>Resposta</para></listitem>
-            </itemizedlist>
-
-            <para>
-                A Roterização realiza-se exatamente uma vez, usando os valores
-                no objeto de requisicão quando <code>dispatch()</code> é chamado.
-                O Despacho ocorre em um laço; uma requisição pode tanto indicar
-                multiplas ações para dispachar, ou o controlador ou um plugin pode
-                reiniciar o objeto de requisição para forçar ações adicionais
-                para o despacho. Quando tudo está pronto, o controlador de frente
-                retorna uma resposta.
-            </para>
-        </sect3>
-
-        <sect3 id="zend.controller.front.methods.primary.run">
-            <title>run()</title>
-
-            <para>
-                <code>Zend_Controller_Front::run($path)</code> é um método estático
-                que toma simplesmente um caminho para um diretório contendo
-                os controladores. Ele
-
-                <code>Zend_Controller_Front::run($path)</code> is a static
-                method taking simply a path to a directory containing
-                controllers. Ele traz um exemplo de controlador de frente (via
-                <link
-                    linkend="zend.controller.front.methods.primary.getinstance">getInstance()</link>,
-                registra o caminho fornecido via <link
-                    linkend="zend.controller.front.methods.primary.setcontrollerdirectory">setControllerDirectory()</link>,
-                e finalmente <link
-                    linkend="zend.controller.front.methods.primary.dispatch">dispacha</link>.
-            </para>
-
-            <para>
-                Basicamente, <code>run()</code> é um método de conveniência que pode
-                ser usado para configurações de sítios que não necessitam de customizações
-                no ambiente de controle de frente.
-            </para>
-
-            <programlisting role="php"><![CDATA[<?php
-// Instantiate front controller, set controller directory, and dispatch in one
-// easy step:
-Zend_Controller_Front::run('../application/controllers');]]>
-            </programlisting>
-        </sect3>
-    </sect2>
-
-    <sect2 id="zend.controller.front.methods.environment">
-        <title>Métodos Acessores Ambientais</title>
-
-        <para>
-            Além dos métodos enumerados em cima, há um número de
-            os métodos acessores que podem ser usados para afetar o ambiente
-            do controlador de frente - e assim o ambiente das classes em que
-            o controlador de frente delega.
-        </para>
-
-        <itemizedlist>
-            <listitem>
-                <para>
-                    <code>resetInstance()</code> pode ser usado para limpar
-                    todas as configurações atualmente definidas.
-                    Seu propósito inicial é para teste, mas
-                    ele também pode ser usado para intâncias onde você
-                    deseja encadear um conjunto de múltiplos controladores de
-                    frente.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>(set|get)DefaultControllerName()</code> permite a você
-                    específicar um nome difetente para usar no controlador padrão
-                    ('index' é usado de outra maneira) e recuperar o valor atual.
-                    Eles apontaram para o <link
-                        linkend="zend.controller.dispatcher">o despachante</link>.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>(set|get)DefaultActionName()</code> permite a você epecíficar
-                    um nome diferente para ser usado na ação padrão ('index' é usado
-                    por padrão) e recuperar o valor atual. Eles apontãm para
-                    <link linkend="zend.controller.dispatcher"> o
-                        despachante</link>.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>(set|get)Request()</code> permite a você específicar
-                    a classe <link
-                        linkend="zend.controller.request">de pedido</link>
-                    ou objeto para usar durente o processo de despacho e
-                    para recuperar o objeto atual. Ao configurar o objeto de
-                    requisição, você pode passar uma nome de classe de requisição,
-                    neste caso o metódo irá carregar o arquivo da classe e instancia-la.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>(set|get)Router()</code> permite a você especificar o objeto ou classe <link
-                        linkend="zend.controller.router">roteador(a)</link>
-                    para usar durante o processo de dispacho e para
-                    recuperar o objeto atual. Quando estiver definindo o objeto
-                    roteador, você pode passar o nome de uma classe roteadora
-                    e neste caso o metódo roteado irá carregar o arquivo da classe
-                    e instancia-la.
-                </para>
-
-                <para>
-                    Quando recuperá o objeto roteador, ele primeiro verifica se já
-                    existe um, se não, instanceia o reteador padrão (roteador re-escrito).
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>(set|get)BaseUrl()</code> let you specify <link
-                        linkend="zend.controller.request.http.baseurl">the base
-                        URL</link> to strip when routing requests and to
-                    retrieve the current value. The value is provided to the
-                    request object just prior to routing.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>(set|get)Dispatcher()</code> let you specify <link
-                        linkend="zend.controller.dispatcher">the
-                        dispatcher</link> class or object to use during the
-                    dispatch process and retrieve the current object. When
-                    setting the dispatcher object, you may pass in a dispatcher
-                    class name, in which case the method will load the class
-                    file and instantiate it.
-                </para>
-
-                <para>
-                    When retrieving the dispatcher object, it first checks to see if
-                    one is present, and if not, instantiates the default
-                    dispatcher.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>(set|get)Response()</code> let you specify <link
-                        linkend="zend.controller.response">the response</link>
-                    class or object to use during the dispatch process and to
-                    retrieve the current object. When setting the response
-                    object, you may pass in a response class name, in which case
-                    the method will load the class file and instantiate it.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>registerPlugin(Zend_Controller_Plugin_Abstract $plugin, $stackIndex = null)</code>
-                    allows you to register a <link
-                        linkend="zend.controller.plugins">plugin objects</link>.
-                    By setting the optional <code>$stackIndex</code>, you can
-                    control the order in which plugins will execute.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>unregisterPlugin($plugin)</code> let you
-                    unregister <link
-                        linkend="zend.controller.plugins">plugin objects</link>.
-                    <code>$plugin</code> may be either a plugin object or a
-                    string denoting the class of plugin to unregister.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>throwExceptions($flag)</code> is used to turn on/off
-                    the ability to throw exceptions during the dispatch process.
-                    By default, exceptions are caught and placed in the <link
-                        linkend="zend.controller.response">response
-                        object</link>; turning on <code>throwExceptions()</code>
-                    will override this behaviour.
-                </para>
-
-                <para>
-                    For more information, read <xref
-                        linkend="zend.controller.exceptions" />.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>returnResponse($flag)</code> is used to tell the front
-                    controller whether to return the response
-                    (<code>true</code>) from <code>dispatch()</code>, or if the
-                    response should be automatically emitted
-                    (<code>false</code>).  By default, the response is
-                    automatically emitted (by calling
-                    <code>Zend_Controller_Response_Abstract::sendResponse()</code>);
-                    turning on <code>returnResponse()</code> will override this
-                    behaviour.
-                </para>
-
-                <para>
-                    Reasons to return the response include a desire to check for
-                    exceptions prior to emitting the response, needing to log
-                    various aspects of the response (such as headers), etc.
-                </para>
-            </listitem>
-        </itemizedlist>
-    </sect2>
-
-    <sect2 id="zend.controller.front.methods.params">
-        <title>Front Controller Parameters</title>
-
-        <para>
-            In the introduction, we indicated that the front controller also
-            acts as a registry for the various controller components. It does so
-            through a family of "param" methods. These methods allow you to
-            register arbitrary data -- objects and variables -- with the front
-            controller to be retrieved at any time in the dispatch chain. These
-            values are passed on to the router, dispatcher, and action
-            controllers. The methods include:
-        </para>
-
-        <itemizedlist>
-            <listitem>
-                <para>
-                    <code>setParam($name, $value)</code> allows you to set a
-                    single parameter of <code>$name</code> with value
-                    <code>$value</code>.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>setParams(array $params)</code> allows you to set
-                    multiple parameters at once using an associative array.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>getParam($name)</code> allows you to retrieve a single
-                    parameter at a time, using <code>$name</code> as the
-                    identifier.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>getParams()</code> allows you to retrieve the entire
-                    list of parameters at once.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>clearParams()</code> allows you to clear a single
-                    parameter (by passing a string identifier), multiple named
-                    parameters (by passing an array of string identifiers), or the
-                    entire parameter stack (by passing nothing).
-                </para>
-            </listitem>
-        </itemizedlist>
-
-        <para>
-            There are several pre-defined parameters that may be set that have
-            specific uses in the dispatch chain:
-        </para>
-
-        <itemizedlist>
-            <listitem>
-                <para>
-                    <code>useDefaultControllerAlways</code> is used to hint to
-                    <link linkend="zend.controller.dispatcher">the
-                        dispatcher</link> to use the default controller in the
-                    default module for any request that is not dispatchable
-                    (i.e., the module, controller, and/or action do not exist).
-                    By default, this is off.
-                </para>
-
-                <para>
-                    See <xref linkend="zend.controller.exceptions.internal" />
-                    for more detailed information on using this setting.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>disableOutputBuffering</code> is used to hint to <link
-                        linkend="zend.controller.dispatcher">the
-                        dispatcher</link> that it should not use output
-                    buffering to capture output generated by action controllers.
-                    By default, the dispatcher captures any output and appends
-                    it to the response object body content.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>noViewRenderer</code> is used to disable the <link
-                        linkend="zend.controller.actionhelpers.viewrenderer">ViewRenderer</link>.
-                    Set this parameter to true to disable it.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <code>noErrorHandler</code> is used to disable the <link
-                        linkend="zend.controller.plugins.standard.errorhandler">Error
-                        Handler plugin</link>. Set this parameter to true to
-                    disable it.
-                </para>
-            </listitem>
-        </itemizedlist>
-    </sect2>
-
-    <sect2 id="zend.controller.front.subclassing">
-        <title>Subclassing the Front Controller</title>
-
-        <para>
-            To subclass the Front Controller, at the very minimum you will need
-            to override the <code>getInstance()</code> method:
-        </para>
-
-        <programlisting role="php"><![CDATA[
-class My_Controller_Front extends Zend_Controller_Front
-{
-    public static function getInstance()
-    {
-        if (null === self::$_instance) {
-            self::$_instance = new self();
-        }
-
-        return self::$_instance;
-    }
-}
-]]>
-        </programlisting>
-
-        <para>
-            Overriding the <code>getInstance()</code> method ensures that
-            subsequent calls to
-            <code>Zend_Controller_Front::getInstance()</code> will return an
-            instance of your new subclass instead of a
-            <code>Zend_Controller_Front</code> instance -- this is particularly
-            useful for some of the alternate routers and view helpers.
-        </para>
-
-        <para>
-            Typically, you will not need to subclass the front controller unless
-            you need to add new functionality (for instance, a plugin
-            autoloader, or a way to specify action helper paths). Some points
-            where you may want to alter behaviour may include modifying how
-            controller directories are stored, or what default router or
-            dispatcher are used.
-        </para>
-    </sect2>
-</sect1>
-<!--
-vim:se ts=4 sw=4 et:
--->

+ 0 - 300
documentation/manual/pt-br/module_specs/Zend_Db_Profiler.xml

@@ -1,300 +0,0 @@
-<sect1 id="zend.db.profiler">
-
-    <title>Zend_Db_Profiler</title>
-
-    <sect2 id="zend.db.profiler.introduction">
-
-        <title>Introdução</title>
-
-        <para>
-                <code>Zend_Db_Profiler</code> pode ser habilitado para permitir o profilling(análise de desempenho) de suas consultas(instruções SQL).
-            Neste profiler(analisador) incluem-se as consultas processadas pelo adaptador e o tempo gasto em suas execuções,
-            permitindo inspecionar as consultas que foram executadas, sem a necessidade de adicionar código ou classes extras de depuração. O seu uso avançado permite também que o desenvolvedor filtre quais consultas serão analisadas.
-        </para>
-
-        <para>
-            Habilite o profiler para todos as consultas passando uma directiva
-            para o construtor do adaptador, ou solicitando ao adaptador para
-            habilitá-lo depois.
-        </para>
-
-        <programlisting role="php"><![CDATA[<?php
-require_once 'Zend/Db.php';
-
-$params = array (
-    'host'     => '127.0.0.1',
-    'username' => 'malory',
-    'password' => '******',
-    'dbname'   => 'camelot',
-    'profiler' => true  // ligando o profiller; mude para false para desabilitá-lo(padrão)
-);
-
-$db = Zend_Db::factory('PDO_MYSQL', $params);
-
-// desligando o profiller:
-$db->getProfiler()->setEnabled(false);
-
-// ligando o profiller:
-$db->getProfiler()->setEnabled(true);]]>
-        </programlisting>
-    </sect2>
-
-    <sect2 id="zend.db.profiler.using">
-
-        <title>Usando o Profiler</title>
-
-        <para>
-            A qualquer momento, capture o profiler usando o método
-            <code>getProfiler()</code> do adaptador.
-        </para>
-
-        <programlisting role="php"><![CDATA[<?php
-$profiler = $db->getProfiler();]]>
-        </programlisting>
-
-        <para>
-            Com isto, é retornado uma instância do objeto <code>Zend_Db_Profiler</code>. Com
-            esta instância, o desenvolvedor pode examinar suas consultas usando uma variedade de métodos:
-        </para>
-
-        <itemizedlist>
-            <listitem>
-                <para>
-                    <code>getTotalNumQueries()</code> retorna o número total
-                    de consultas que foram analisadas.
-                </para>
-            </listitem>
-            <listitem>
-                <para>
-                    <code>getTotalElapsedSecs()</code> retorna o número total
-                    de segundos gastos em todas as consultas analisadas.
-                </para>
-            </listitem>
-            <listitem>
-                <para>
-                    <code>getQueryProfiles()</code> retorna um array com todas as
-                    análises das consultas.
-                </para>
-            </listitem>
-            <listitem>
-                <para>
-                    <code>getLastQueryProfile</code> retorna a última (mais recente)
-                    consulta analisada, independente ou não se esta consulta foi finalizada(se não, o tempo final será nulo)
-                </para>
-            </listitem>
-            <listitem>
-                <para>
-                    <code>clear()</code> limpa qualquer análise antiga da pilha de execução.
-                </para>
-            </listitem>
-        </itemizedlist>
-
-        <para>
-            O valor retornado pelo <code>getLastQueryProfile()</code> e os
-            elementos individuais do <code>getQueryProfiles()</code> são
-            objetos do <code>Zend_Db_Profiler_Query</code>, que provê a
-            habilidade de inspecionar suas consultas individualmente:
-        </para>
-
-        <itemizedlist>
-            <listitem>
-                <para>
-                    <code>getQuery()</code> retorna o texto SQL da consulta.
-                    O texto SQL de uma instrução preparada (prepared statement) com seus parâmetros é o texto
-                    no momento em que a consulta foi preparada, contendo apenas os seus parâmetros, e não os seus valores
-                    usados quando a instrução é executada.
-                </para>
-            </listitem>
-            <listitem>
-                <para>
-                    <code>getQueryParams()</code> retorna um array de valores dos parâmetros que são usados
-                    quando for executada uma query preparada.
-                    Nisto incluem-se ambos parâmetros e argumentos acoplados do método <code>execute()</code> da instrução.
-                    As chaves do array são os posicionais (1-baseado) ou nomeados(string) índices de parâmetro.
-                </para>
-            </listitem>
-            <listitem>
-                <para>
-
-                    <code>getElapsedSecs()</code> retorna o número de segundos que a consulta executou.
-                </para>
-            </listitem>
-        </itemizedlist>
-
-        <para>
-            A informação fornecida pelo <code>Zend_Db_Profiler</code> é útil para analisar os gargalos
-            das aplicações, e para depurar consultas que foram executadas. Por exemplo, para ver a última
-            consulta que foi executada:
-        </para>
-
-        <programlisting role="php"><![CDATA[<?php
-$query = $profiler->getLastQueryProfile();
-
-echo $query->getQuery();]]>
-        </programlisting>
-
-        <para>
-            Talvez uma página qualquer esteja gerando lentidão. Use o profiler para determinar
-            primeiro o total de segundos gastos em todas as consultas, e então
-            examine-as para encontrar aquele que demorou mais tempo para executar.
-        </para>
-
-        <programlisting role="php"><![CDATA[<?php
-$totalTime    = $profiler->getTotalElapsedSecs();
-$queryCount   = $profiler->getTotalNumQueries();
-$longestTime  = 0;
-$longestQuery = null;
-
-foreach ($profiler->getQueryProfiles() as $query) {
-    if ($query->getElapsedSecs() > $longestTime) {
-        $longestTime  = $query->getElapsedSecs();
-        $longestQuery = $query->getQuery();
-    }
-}
-
-echo 'Executado: ' . $queryCount . ' consultas em ' . $totalTime . ' seconds' . "\n";
-echo 'Tamanho médio da query' . $totalTime / $queryCount . ' seconds' . "\n";
-echo 'consultas por segundo: ' . $queryCount / $totalTime . "\n";
-echo 'Query que demorou mais tempo: ' . $longestTime . "\n";
-echo "Query mais longa: \n" . $longestQuery . "\n";]]>
-        </programlisting>
-
-    </sect2>
-
-    <sect2 id="zend.db.profiler.advanced">
-
-        <title>Uso Avançado do Profiller</title>
-
-        <para>
-            Além da inspeção de consultas, o profiler também permite ao devenvolvedor
-            filtrar quais consultas sejam analisadas. Os seguintes métodos
-            operam em uma instância de <code>Zend_Db_Profiler</code>.
-        </para>
-
-        <sect3 id="zend.db.profiler.advanced.filtertime">
-            <title>Filtro por tempo decorrido das consultas</title>
-
-            <para>
-                <code>setFilterElapsedSecs()</code> permite ao desenvolvedor setar um
-                tempo mínimo para uma consulta antes de ela ser analisada.
-                Para remover o filtro, passe para o método um valor nulo.
-            </para>
-
-            <programlisting role="php"><![CDATA[<?php
-// Apenas consultas analisadas que levam ao menos 5 segundos:
-$profiler->setFilterElapsedSecs(5);
-
-// Todas as consultas analisadas, não importando o tamanho:
-$profiler->setFilterElapsedSecs(null);]]>
-            </programlisting>
-        </sect3>
-
-        <sect3 id="zend.db.profiler.advanced.filtertype">
-            <title>Filtro pelo tipo de consulta</title>
-
-            <para>
-                <code>setFilterQueryType()</code> permite ao desenvolvedor setar
-                quais tipos de consultas deverão ser analisadas; para analisar
-                múltiplos tipos, lógicos ou todas. Os tipos de consultas são definidas
-                segundo as constantes de <code>Zend_Db_Profiler</code>
-            </para>
-
-            <itemizedlist>
-                <listitem>
-                    <para>
-                        <code>Zend_Db_Profiler::CONNECT</code>: operações de conexão,
-                        ou seleção de base de dados.
-                    </para>
-                </listitem>
-                <listitem>
-                    <para>
-                        <code>Zend_Db_Profiler::QUERY</code>: consultas gerais da
-                        base de dados que não se encaixam com outro tipos.
-                    </para>
-                </listitem>
-                <listitem>
-                    <para>
-                        <code>Zend_Db_Profiler::INSERT</code>: qualquer consulta que
-                        adicionar novos dados para a base de dados, geralmente um INSERT SQL.
-                    </para>
-                </listitem>
-                <listitem>
-                    <para>
-                        <code>Zend_Db_Profiler::UPDATE</code>: qualquer consulta que
-                        atualiza dados existentes, geralmente um UPDATE SQL.
-                    </para>
-                </listitem>
-                <listitem>
-                    <para>
-                        <code>Zend_Db_Profiler::DELETE</code>: qualquer consulta que
-                        exclui dados existentes, geralmente um DELETE SQL.
-                    </para>
-                </listitem>
-                <listitem>
-                    <para>
-                        <code>Zend_Db_Profiler::SELECT</code>: qualquer consulta que
-                        retorna dados existentes, geralmente um SELECT SQL.
-                    </para>
-                </listitem>
-                <listitem>
-                    <para>
-                        <code>Zend_Db_Profiler::TRANSACTION</code>: qualquer
-                        operação transacional, como a inicialição da transação, commit ou rollback.
-                    </para>
-                </listitem>
-            </itemizedlist>
-
-            <para>
-                Assim como usando o <code>setFilterElapsedSecs()</code>, você pode remover
-                quaisquer filtros existentes passando <code>null</code> como único argumento.
-            </para>
-
-            <programlisting role="php"><![CDATA[<?php
-// Analisa somente consultas usando SELECT
-$profiler->setFilterQueryType(Zend_Db_Profiler::SELECT);
-
-// Analisa as consultas SELECT, INSERT e UPDATE
-$profiler->setFilterQueryType(Zend_Db_Profiler::SELECT | Zend_Db_Profiler::INSERT | Zend_Db_Profiler::UPDATE);
-
-// Analisa a instrução DELETE (então podemos descobrir porque os dados continuam desaparecendo)
-$profiler->setFilterQueryType(Zend_Db_Profiler::DELETE);
-
-// Remove totos os filtros
-$profiler->setFilterQueryType(null);]]>
-            </programlisting>
-
-        </sect3>
-
-        <sect3 id="zend.db.profiler.advanced.getbytype">
-            <title>Retorna análises por tipo de consulta</title>
-
-            <para>
-                Usando o <code>setFilterQueryType()</code>, podemos resumir as análises geradas.
-                Entretanto, às vezes é mais útil manter todas as análises e visualizar somente
-                aquelas que você precisa num determinado momento. Outra funcionalidade do
-                <code>getQueryProfiles()</code> é a capacidade de fazer esta filtragem
-                "on-the-fly" (execução de código em tempo de execução),
-                passando o tipo da consulta(ou uma combinação lógica de tipos) em seu primeiro argumento;
-                veja na <xref linkend="zend.db.profiler.advanced.filtertype" />
-                uma lista de todas as constantes dos tipos de consultas.
-            </para>
-
-            <programlisting role="php"><![CDATA[<?php
-// Retorna apenas consultas SELECT analisadas
-$profiles = $profiler->getQueryProfiles(Zend_Db_Profiler::SELECT);
-
-// Retorna apenas anásiles de consultas SELECT, INSERT e UPDATE.
-$profiles = $profiler->getQueryProfiles(Zend_Db_Profiler::SELECT | Zend_Db_Profiler::INSERT | Zend_Db_Profiler::UPDATE);
-
-// Retorna as análises feitas na instrução DELETE (então podemos descobrir porque os dados continuam desaparecendo)
-$profiles = $profiler->getQueryProfiles(Zend_Db_Profiler::DELETE);]]>
-            </programlisting>
-
-        </sect3>
-
-    </sect2>
-
-</sect1>
-<!--
-vim:se ts=4 sw=4 et:
--->

+ 0 - 1304
documentation/manual/pt-br/module_specs/Zend_Db_Select.xml

@@ -1,1304 +0,0 @@
-<sect1 id="zend.db.select">
-
-    <title>Zend_Db_Select</title>
-
-    <sect2 id="zend.db.select.introduction">
-
-        <title>Visão Geral do Objeto Select</title>
-
-        <para>
-            O objeto Zend_Db_Select representa um comando de consulta SQL <code>SELECT</code>.
-            A classe possui métodos para a adição de partes individuais em uma query. Você
-            pode especificar algumas partes da consulta usando métodos PHP e estruturas de
-            dados, e a classe se encarrega de formar a sintaxe SQL correta para você. Depois
-            da construção de uma consulta, você pode executá-la como se você houvesse a escrito
-            em uma string.
-        </para>
-
-        <para>
-            As vantagens oferecidas pelo Zend_Db_Select incluem:
-        </para>
-
-        <itemizedlist>
-            <listitem>
-                <para>
-                    Métodos orientados a objetos para especificação de consultas SQL
-                    de maneira "piece-by-piece" (aos pedaços ou em partes);
-                </para>
-            </listitem>
-            <listitem>
-                <para>
-                    Abstração de independência de base de dados de algumas partes
-                    da consulta SQL;
-                </para>
-            </listitem>
-            <listitem>
-                <para>
-                    Colocação automática de aspas nos identificadores de metadados na maioria
-                    dos casos, para dar suporte aos identificadores que contém palavras SQL reservadas
-                    e caracteres especiais;
-                </para>
-            </listitem>
-            <listitem>
-                <para>
-                    Colocação automática de aspas nos identificadores e valores, para ajudar
-                    na redução de ataques por "SQL injection".
-                </para>
-            </listitem>
-        </itemizedlist>
-
-        <para>
-            A utilização de Zend_Db_Select não é obrigatória. Para consultas SELECT
-            muito simples, normalmente é mais fácil escrever toda a consulta SQL
-            em uma string e executá-la usando métodos da classe Adapter, como o
-            <code>query()</code> ou <code>fetchAll()</code>. O uso de Zend_Db_Select
-            é muito útil quando você precisa montar uma consulta SELECT usando "procedures"
-            (através de procedimentos), ou quando você precisa montar a consulta baseando-se
-            na lógica condicional da sua aplicação.
-        </para>
-
-    </sect2>
-
-    <sect2 id="zend.db.select.creating">
-
-        <title>Criando um Objeto Select</title>
-
-        <para>
-            Você pode criar uma instância de um objeto Zend_Db_Select
-            usando o método <code>select()</code> de um objeto Zend_Db_Adapter_Abstract.
-        </para>
-
-        <example id="zend.db.select.creating.example-db">
-            <title>Exemplo do método select() do adaptador para bases de dados</title>
-            <programlisting role="php"><![CDATA[<?php
-
-$db = Zend_Db::factory( ...options... );
-$select = $db->select();]]></programlisting>
-        </example>
-
-        <para>
-            Outra forma de criar um objeto Zend_Db_Select é com o
-            construtor dele, especificando o adaptador como parâmetro.
-        </para>
-
-        <example id="zend.db.select.creating.example-new">
-            <title>Examplo da criação de um novo objeto Select</title>
-            <programlisting role="php"><![CDATA[<?php
-
-$db = Zend_Db::factory( ...options... );
-$select = new Zend_Db_Select($db);]]></programlisting>
-        </example>
-
-    </sect2>
-
-    <sect2 id="zend.db.select.building">
-
-        <title>Construindo Consultas Select</title>
-
-        <para>
-            Ao contruir um consulta, você pode adicionar cláusulas uma por uma.
-            Existe um método diferente para cada cláusula no objeto.
-        </para>
-
-        <example id="zend.db.select.building.example">
-            <title>Exemplo do uso de métodos para adicionar cláusulas</title>
-            <programlisting role="php"><![CDATA[<?php
-
-// Create the Zend_Db_Select object
-$select = $db->select();
-
-// Add a FROM clause
-$select->from( ...specify table and columns... )
-
-// Add a WHERE clause
-$select->where( ...specify search criteria... )
-
-// Add an ORDER BY clause
-$select->order( ...specify sorting criteria... );]]></programlisting>
-        </example>
-
-        <para>
-            Você também pode usar a maior parte dos métodos do objeto Zend_Db_Select
-            com uma interface "fluent" conveniente.  Uma interface "fluent" significa que cada
-            método retorna uma referência para o objeto no qual foi chamado, então você pode
-            imediatamente chamar outro método.
-        </para>
-
-        <example id="zend.db.select.building.example-fluent">
-            <title>Examplo de uso da interface "fluent"</title>
-            <programlisting role="php"><![CDATA[<?php
-
-$select = $db->select()
-    ->from( ...specify table and columns... )
-    ->where( ...specify search criteria... )
-    ->order( ...specify sorting criteria... );]]></programlisting>
-        </example>
-
-        <para>
-            Os exemplos nesta seção mostram o uso da  interface "fluent",
-            mas você pode usar a interface "non-fluent" em todos os casos.
-            É freqüentemente necessário usar a interface "non-fluent" quando, por exemplo,
-            sua aplicação precisa executar alguma lógica antes de adicionar uma cláusula
-            a uma consulta.
-        </para>
-
-        <sect3 id="zend.db.select.building.from">
-
-            <title>Adicionando uma cláusula FROM</title>
-
-            <para>
-                Especifique a tabela para esta consulta usando o método <code>from()</code>.
-                Você pode especificar o nome da tabela como uma simples string.
-                Zend_Db_Select coloca o entre aspas o nome da tabela, então, você pode
-                usar caracteres especiais.
-            </para>
-
-            <example id="zend.db.select.building.from.example">
-                <title>Example of the from() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT *
-//   FROM "products"
-
-$select = $db->select()
-    ->from( 'products' );]]></programlisting>
-            </example>
-
-            <para>
-                You can also specify the correlation name (sometimes called the
-                "table alias") for a table.  Instead of a simple string, use an
-                associative array mapping the correlation name to the table
-                name.  In other clauses of the SQL query, use this correlation
-                name.  If your query joins more than one table, Zend_Db_Select
-                generates unique correlation names based on the table names,
-                for any tables for which you don't specify the correlation name.
-            </para>
-
-            <example id="zend.db.select.building.from.example-cname">
-                <title>Example of specifying a table correlation name</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT p.*
-//   FROM "products" AS p
-
-$select = $db->select()
-    ->from( array('p' => 'products') );]]></programlisting>
-            </example>
-
-            <para>
-                Algumas marcas de RDBMS dão suporte a um especificador de schema
-                para uma tabela. Você pode especificar o nome a tabela como
-                "<code>schemaName.tableName</code>", onde Zend_Db_Select coloca entre aspas
-                cada uma das partes individualmente, ou então você deve especificar o nome
-                do schema separadamente. Um nome de schema especificado no nome da tabela
-                precede um schema fornecido separadamente se eventualmente ambos forem
-                informados.
-            </para>
-
-            <example id="zend.db.select.building.from.example-schema">
-                <title>Exemplo de especificação de nome de schema</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT *
-//   FROM "myschema"."products"
-
-$select = $db->select()
-    ->from( 'myschema.products' );
-
-// or
-
-$select = $db->select()
-    ->from('products', '*', 'myschema');]]></programlisting>
-            </example>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.building.columns">
-
-            <title>Adicionando Colunas</title>
-
-            <para>
-                No segundo argumento do método <code>from()</code> ,
-                você pode especificaras colunas a serem selecionadas da
-                respectiva tabela. Se você não especificar nenhuma coluna,
-                o valor padrão é "<code>*</code>", o caracter curinga para "todas as colunas".
-            </para>
-
-            <para>
-                Você pode listar as colunas em um simples array de strings, ou como
-                um mapeamento associativo do alias da coluna para nome da coluna.
-                Se você só tiver uma coluna para consultar, e não precisar indicar um
-                alias, você pode listá-la em uma string simples ao invés de um array.
-            </para>
-
-            <para>
-                Se você passar um array vazio como o argumento de colunas, nenhuma
-                coluna da respectiva tabela será incluída no result set.
-                Veja um exemplo de <link linkend="zend.db.select.building.join.example-no-columns">código</link> sob a seção do método <code>join()</code>.
-            </para>
-
-            <para>
-                Você pode especificar o nome da coluna como
-                "<code>correlationName.columnName</code>".
-                Zend_Db_Select os coloca entre aspas individualmente.
-                Caso você não especifique o nome da correlação para uma coluna,
-                é usado o nome da correlação da tabela indicada no método<code>from()</code>.
-            </para>
-
-            <example id="zend.db.select.building.columns.example">
-                <title>Examples of specifying columns</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT p."product_id", p."product_name"
-//   FROM "products" AS p
-
-$select = $db->select()
-    ->from(array('p' => 'products'),
-        array('product_id', 'product_name'));
-
-// Build the same query, specifying correlation names:
-//   SELECT p."product_id", p."product_name"
-//   FROM "products" AS p
-
-$select = $db->select()
-    ->from(array('p' => 'products'),
-        array('p.product_id', 'p.product_name'));
-
-// Build this query with an alias for one column:
-//   SELECT p."product_id" AS prodno, p."product_name"
-//   FROM "products" AS p
-
-$select = $db->select()
-    ->from(array('p' => 'products'),
-        array('prodno' => 'product_id', 'product_name'));]]></programlisting>
-            </example>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.building.columns-expr">
-
-            <title>Adicionando Colunas de Expressões</title>
-
-            <para>
-               Algumas vezes as colunas de uma consulta SQL são expressões, e não
-               simplesmente o nome de uma couna da tabela. Expressões não devem usar
-               nomes de correlação ou aspas. Se a string da coluna possuir parênteses,
-               Zend_Db_Select a reconhecerá como uma expressão.
-            </para>
-
-            <para>
-                Você também pode criar um objeto do tipo Zend_Db_Expr explicitamente,
-                para prevenir que uma string seja tratada como um nome de coluna.
-                Zend_Db_Expr é uma classe diminuta que contém uma única string.
-                Zend_Db_Select reconhece obtejos do tipo Zend_Db_Expr e os converte
-                novamente para strings, mas não efetua qualquer alteração como a
-                colocação de aspas ou nomes de correlação.
-            </para>
-
-            <note>
-                <para>
-                    O uso de Zend_Db_Expr para nomes de colunas não é necessário se as
-                    expressões contiverem parênteses; Zend_Db_Select reconhece os parênteses
-                    e trata a string como uma expresão, ignorando a colocação de aspas e de
-                    nomes de correlação.
-                </para>
-            </note>
-
-            <example id="zend.db.select.building.columns-expr.example">
-                <title>Exemplos de especificação de colunas contendo expressões</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT p."product_id", LOWER(product_name)
-//   FROM "products" AS p
-// An expression with parentheses implicitly becomes
-// a Zend_Db_Expr.
-
-$select = $db->select()
-    ->from(array('p' => 'products'),
-        array('product_id', 'LOWER(product_name)'));
-
-// Build this query:
-//   SELECT p."product_id", (p.cost * 1.08) AS cost_plus_tax
-//   FROM "products" AS p
-
-$select = $db->select()
-    ->from(array('p' => 'products'),
-        array('product_id', 'cost_plus_tax' => '(p.cost * 1.08)'));
-
-// Build this query using Zend_Db_Expr explicitly:
-//   SELECT p."product_id", p.cost * 1.08 AS cost_plus_tax
-//   FROM "products" AS p
-
-$select = $db->select()
-    ->from(array('p' => 'products'),
-        array('product_id', 'cost_plus_tax' => new Zend_Db_Expr('p.cost * 1.08')));]]></programlisting>
-            </example>
-
-            <para>
-                Nos casos acima, Zend_Db_Select não altera a string
-                para colocar os nomes de correlação ou aspas. Se as
-                mudanças forem necessárias para evitar alguma ambiguidade,
-                você deve fazê-las manualmente na string.
-            </para>
-
-            <para>
-                Se os nomes das colunas são palavras-chave SQL ou possuem
-                caracteres especiais, você deve usar o método <code>quoteIdentifier()</code>
-                da classe Adapter, e interpolar o resultado na string. O método
-                <code>quoteIdentifier()</code> usa aspas no SQL para delimitar o identificador,
-                o que deixa claro que ele é um identificador de uma tabela ou coluna e não
-                parte da síntaxe SQL.
-            </para>
-
-            <para>
-                Seu código fica mais independente de base de dados se você
-                usar o método <code>quoteIdentifier()</code> ao invés de digitar
-                as aspas nas strings porque algumas marcas de SGBD Relacionais usam
-                símbolos fora do padrão para referenciar identificadores.
-                O método <code>quoteIdentifier()</code> é projetado para usar
-                os símbolos de referência apropriados de acordo com o tipo de adaptador.
-                O método  <code>quoteIdentifier()</code> também ignora qualquer
-                caracter de referência que aparecer no nome de um identificador.
-            </para>
-
-            <example id="zend.db.select.building.columns-quoteid.example">
-                <title>Examples of quoting columns in an expression</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query, quoting a special column name "from" in the expression:
-//   SELECT p."from" + 10 AS origin
-//   FROM "products" AS p
-
-$select = $db->select()
-    ->from(array('p' => 'products'),
-        array('origin' => '(p.' . $db->quoteIdentifier('from') . ' + 10)'));]]></programlisting>
-            </example>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.building.join">
-
-            <title>Adding Another Table to the Query with JOIN</title>
-
-            <para>
-                Many useful queries involve using a <code>JOIN</code>
-                to combine rows from multiple tables.  You can add
-                tables to a Zend_Db_Select query using the
-                <code>join()</code> method.  Using this method is
-                similar to the <code>from()</code> method, except
-                you can also specify a join condition in most cases.
-            </para>
-
-            <example id="zend.db.select.building.join.example">
-                <title>Example of the join() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT p."product_id", p."product_name", l.*
-//   FROM "products" AS p JOIN "line_items" AS l
-//     ON p.product_id = l.product_id
-
-$select = $db->select()
-    ->from(array('p' => 'products'),
-        array('product_id', 'product_name'))
-    ->join(array('l' => 'line_items'),
-        'p.product_id = l.product_id');]]></programlisting>
-            </example>
-
-            <para>
-                The second argument to <code>join()</code> is a string
-                that is the join condition.  This is an expression that
-                declares the criteria by which rows in one table match
-                rows in the the other table.  You can use correlation
-                names in this expression.
-            </para>
-
-            <note>
-                <para>
-                    No quoting is applied to the expression you specify
-                    for the join condition; if you have column names that need
-                    to be quoted, you must use <code>quoteIdentifier()</code>
-                    as you form the string for the join condition.
-                </para>
-            </note>
-
-            <para>
-                The third argument to <code>join()</code> is an array
-                of column names, like that used in the <code>from()</code>
-                method.  It defaults to "<code>*</code>", supports correlation
-                names, expressions, and Zend_Db_Expr in the same way as the
-                array of column names in the <code>from()</code> method.
-            </para>
-
-            <para>
-                To select no columns from a table, use an empty array for
-                the list of columns.  This usage works in the
-                <code>from()</code> method too, but typically you want
-                some columns from the primary table in your queries,
-                whereas you might want no columns from a joined table.
-            </para>
-
-            <example id="zend.db.select.building.join.example-no-columns">
-                <title>Example of specifying no columns</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT p."product_id", p."product_name"
-//   FROM "products" AS p JOIN "line_items" AS l
-//     ON p.product_id = l.product_id
-
-$select = $db->select()
-    ->from(array('p' => 'products'),
-        array('product_id', 'product_name'))
-    ->join(array('l' => 'line_items'),
-        'p.product_id = l.product_id',
-        array() ); // empty list of columns]]></programlisting>
-                <para>
-                    Note the empty <code>array()</code> in the above example
-                    in place of a list of columns from the joined table.
-                </para>
-            </example>
-
-            <para>
-                SQL has several types of joins.
-                See the list below for the methods to support
-                different join types in Zend_Db_Select.
-            </para>
-
-            <itemizedlist>
-                <listitem>
-                    <para>
-                        <command>INNER JOIN</command> with the
-                        <code>join(table, join, [columns])</code>
-                        or <code>joinInner(table, join, [columns])</code> methods.
-                    </para>
-                    <para>
-                        This may be the most common type of join.  Rows from
-                        each table are compared using the join condition you
-                        specify.  The result set includes only the rows that
-                        satisfy the join condition.  The result set can be
-                        empty if no rows satisfy this condition.
-                    </para>
-                    <para>
-                        All RDBMS brands support this join type.
-                    </para>
-                </listitem>
-                <listitem>
-                    <para>
-                        <command>LEFT JOIN</command> with the
-                        <code>joinLeft(table, condition, [columns])</code> method.
-                    </para>
-                    <para>
-                        All rows from the left operand table are included,
-                        matching rows from the right operand table included,
-                        and the columns from the right operand table are filled
-                        with NULLs if no row exists matching the left table.
-                    </para>
-                    <para>
-                        All RDBMS brands support this join type.
-                    </para>
-                </listitem>
-                <listitem>
-                    <para>
-                        <command>RIGHT JOIN</command> with the
-                        <code>joinRight(table, condition, [columns])</code> method.
-                    </para>
-                    <para>
-                        Right outer join is the complement of left outer join.
-                        All rows from the right operand table are included,
-                        matching rows from the left operand table included,
-                        and the columns from the left operand table are filled
-                        with NULLs if no row exists matching the right table.
-                    </para>
-                    <para>
-                        Some RDBMS brands don't support this join type, but
-                        in general any right join can be represented as a left
-                        join by reversing the order of the tables.
-                    </para>
-                </listitem>
-                <listitem>
-                    <para>
-                        <command>FULL JOIN</command> with the
-                        <code>joinFull(table, condition, [columns])</code> method.
-                    </para>
-                    <para>
-                        A full outer join is like combining a left outer join
-                        and a right outer join.  All rows from both tables are
-                        included, paired with each other on the same row of the
-                        result set if they satisfy the join condition, and
-                        otherwise paired with NULLs in place of columns from the
-                        other table.
-                    </para>
-                    <para>
-                        Some RDBMS brands don't support this join type.
-                    </para>
-                </listitem>
-                <listitem>
-                    <para>
-                        <command>CROSS JOIN</command> with the
-                        <code>joinCross(table, [columns])</code> method.
-                    </para>
-                    <para>
-                        A cross join is a Cartesian product.
-                        Every row in the first table is matched to every
-                        row in the second table.  Therefore the number of
-                        rows in the result set is equal to the product of
-                        the number of rows in each table.  You can filter
-                        the result set using conditions in a WHERE clause;
-                        in this way a cross join is similar to the old SQL-89
-                        join syntax.
-                    </para>
-                    <para>
-                        The <code>joinCross()</code> method has no parameter
-                        to specify the join condition.
-                        Some RDBMS brands don't support this join type.
-                    </para>
-                </listitem>
-                <listitem>
-                    <para>
-                        <command>NATURAL JOIN</command> with the
-                        <code>joinNatural(table, [columns])</code> method.
-                    </para>
-                    <para>
-                        A natural join compares any column(s) that appear with
-                        the same name in both tables.  The comparison is
-                        equality of all the column(s); comparing the columns
-                        using inequality is not a natural join.
-                        Only natural inner joins are supported by this API,
-                        even though SQL permits natural outer joins as well.
-                    </para>
-                    <para>
-                        The <code>joinNatural()</code> method has no parameter
-                        to specify the join condition.
-                    </para>
-                </listitem>
-            </itemizedlist>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.building.where">
-
-            <title>Adding a WHERE Clause</title>
-
-            <para>
-                You can specify criteria for restricting rows of the result set
-                using the <code>where()</code> method.  The first argument of
-                this method is a SQL expression, and this expression is used
-                in a SQL <code>WHERE</code> clause in the query.
-            </para>
-
-            <example id="zend.db.select.building.where.example">
-                <title>Example of the where() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT product_id, product_name, price
-//   FROM "products"
-//   WHERE price > 100.00
-
-$select = $db->select()
-    ->from(
-        'products',
-        array('product_id', 'product_name', 'price'))
-    ->where('price > 100.00');]]></programlisting>
-            </example>
-
-            <note>
-                <para>
-                    No quoting is applied to expressions given to the
-                    <code>where()</code> or <code>orWhere()</code> methods.
-                    If you have column names that need to be quoted, you must use
-                    <code>quoteIdentifier()</code> as you form the string for the
-                    condition.
-                </para>
-            </note>
-
-            <para>
-                The second argument to the <code>where()</code> method is
-                optional.  It is a value to substitute into the expression.
-                Zend_Db_Select quotes the value and substitutes it for a
-                question-mark ("<code>?</code>") symbol in the expression.
-            </para>
-
-            <para>
-                This method accepts only one parameter.
-                If you have an expression into which you need to substitute
-                multiple variables, you must format the string manually,
-                interpolating variables and performing quoting yourself.
-            </para>
-
-            <example id="zend.db.select.building.where.example-param">
-                <title>Example of a parameter in the where() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT product_id, product_name, price
-//   FROM "products"
-//   WHERE (price > 100.00)
-
-$minimumPrice = 100;
-
-$select = $db->select()
-    ->from(
-        'products',
-        array('product_id', 'product_name', 'price'))
-    ->where('price > ?', $minimumPrice);]]></programlisting>
-            </example>
-
-            <para>
-                You can invoke the <code>where()</code> method multiple times
-                on the same Zend_Db_Select object.  The resulting query combines
-                the multiple terms together using <code>AND</code> between them.
-            </para>
-
-            <example id="zend.db.select.building.where.example-and">
-                <title>Example of multiple where() methods</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT product_id, product_name, price
-//   FROM "products"
-//   WHERE (price > 100.00)
-//     AND (price < 500.00)
-
-$minimumPrice = 100;
-$maximumPrice = 500;
-
-$select = $db->select()
-    ->from('products',
-        array('product_id', 'product_name', 'price'))
-    ->where('price > ?', $minimumPrice)
-    ->where('price < ?', $maximumPrice);]]></programlisting>
-            </example>
-
-            <para>
-                If you need to combine terms together using <code>OR</code>,
-                use the <code>orWhere()</code> method.  This method is used
-                in the same way as the <code>where()</code> method, except
-                that the term specified is preceded by <code>OR</code>,
-                instead of <code>AND</code>.
-            </para>
-
-            <example id="zend.db.select.building.where.example-or">
-                <title>Example of the orWhere() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT product_id, product_name, price
-//   FROM "products"
-//   WHERE (price < 100.00)
-//     OR (price > 500.00)
-
-$minimumPrice = 100;
-$maximumPrice = 500;
-
-$select = $db->select()
-    ->from('products',
-        array('product_id', 'product_name', 'price'))
-    ->where('price < ?', $minimumPrice)
-    ->orWhere('price > ?', $maximumPrice);]]></programlisting>
-            </example>
-
-            <para>
-                Zend_Db_Select automatically puts parentheses around each
-                expression you specify using the <code>where()</code> or
-                <code>orWhere()</code> methods.  This helps to ensure that
-                Boolean operator precedence does not cause unexpected
-                results.
-            </para>
-
-            <example id="zend.db.select.building.where.example-parens">
-                <title>Example of parenthesizing Boolean expressions</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT product_id, product_name, price
-//   FROM "products"
-//   WHERE (price < 100.00 OR price > 500.00)
-//     AND (product_name = 'Apple')
-
-$minimumPrice = 100;
-$maximumPrice = 500;
-$prod = 'Apple';
-
-$select = $db->select()
-    ->from('products',
-        array('product_id', 'product_name', 'price'))
-    ->where("price < $minimumPrice OR price > $maximumPrice")
-    ->where('product_name = ?', $prod);]]></programlisting>
-            </example>
-
-            <para>
-                In the example above, the results would be quite different
-                without the parentheses, because <code>AND</code> has higher
-                precedence than <code>OR</code>.  Zend_Db_Select applies the
-                parentheses so the effect is that each expression in successive
-                calls to the <code>where()</code> bind more tightly than the
-                <code>AND</code> that combines the expressions.
-            </para>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.building.group">
-
-            <title>Adding a GROUP BY Clause</title>
-
-            <para>
-                In SQL, the <code>GROUP BY</code> clause allows you
-                to reduce the rows of a query result set to one row per
-                unique value found in the column(s) named in the
-                <code>GROUP BY</code> clause.
-            </para>
-
-            <para>
-                In Zend_Db_Select, you can specify the column(s) to use
-                for calculating the groups of rows using the
-                <code>group()</code> method.  The argument to this
-                method is a column or an array of columns to use in
-                the <code>GROUP BY</code> clause.
-            </para>
-
-            <example id="zend.db.select.building.group.example">
-                <title>Example of the group() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT p."product_id", COUNT(*) AS line_items_per_product
-//   FROM "products" AS p JOIN "line_items" AS l
-//     ON p.product_id = l.product_id
-//   GROUP BY p.product_id
-
-$select = $db->select()
-    ->from(array('p' => 'products'),
-        array('product_id'))
-    ->join(array('l' => 'line_items'),
-        'p.product_id = l.product_id',
-        array('line_items_per_product' => 'COUNT(*)'))
-    ->group('p.product_id');]]></programlisting>
-            </example>
-
-            <para>
-                Like the columns array in the <code>from()</code> method, you
-                can use correlation names in the column name strings, and the
-                column is quoted as an identifier unless the string contains
-                parentheses or is an object of type Zend_Db_Expr.
-            </para>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.building.having">
-
-            <title>Adding a HAVING Clause</title>
-
-            <para>
-                In SQL, the <code>HAVING</code> clause applies a restriction
-                condition on groups of rows.  This is similar to how a
-                <code>WHERE</code> clause applies a restriction condition on rows.
-                But the two clauses are different because <code>WHERE</code>
-                conditions are applied before groups are defined, whereas
-                <code>HAVING</code> conditions are applied after groups are
-                defined.
-            </para>
-
-            <para>
-                In Zend_Db_Select, you can specify conditions for restricting
-                groups using the <code>having()</code> method.  Its usage is
-                similar to that of the <code>where()</code> method.
-                The first argument is a string containing a SQL expression.
-                The optional second argument is a value that is used to replace
-                a positional parameter placeholder in the SQL expression.
-                Expressions given in multiple invocations of the
-                <code>having()</code> method are combined using the Boolean
-                <code>AND</code> operator, or the <code>OR</code> operator if
-                you use the <code>orHaving()</code> method.
-            </para>
-
-            <example id="zend.db.select.building.having.example">
-                <title>Example of the having() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT p."product_id", COUNT(*) AS line_items_per_product
-//   FROM "products" AS p JOIN "line_items" AS l
-//     ON p.product_id = l.product_id
-//   GROUP BY p.product_id
-//   HAVING line_items_per_product > 10
-
-$select = $db->select()
-    ->from(array('p' => 'products'),
-        array('product_id'))
-    ->join(array('l' => 'line_items'),
-        'p.product_id = l.product_id',
-        array('line_items_per_product' => 'COUNT(*)'))
-    ->group('p.product_id')
-    ->having('line_items_per_product > 10');]]></programlisting>
-            </example>
-
-            <note>
-                <para>
-                    No quoting is applied to expressions given to the
-                    <code>having()</code> or <code>orHaving()</code> methods.
-                    If you have column names that need to be quoted, you must use
-                    <code>quoteIdentifier()</code> as you form the string for the
-                    condition.
-                </para>
-            </note>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.building.order">
-
-            <title>Adding an ORDER BY Clause</title>
-
-            <para>
-                In SQL, the <code>ORDER BY</code> clause specifies one or more
-                columns or expressions by which the result set of a query is
-                sorted.  If multiple columns are listed, the secondary columns
-                are used to resolve ties; the sort order is determined by the
-                secondary columns if the preceding columns contain identical
-                values.  The default sorting is from least value to greatest
-                value.  You can also sort by greatest value to least value for
-                a given column in the list by specifying the keyword
-                <code>DESC</code> after that column.
-            </para>
-
-            <para>
-                In Zend_Db_Select, you can use the <code>order()</code> method
-                to specify a column or an array of columns by which to sort.
-                Each element of the array is a string naming a column.
-                optionally with the <code>ASC</code> <code>DESC</code> keyword
-                following it, separated by a space.
-            </para>
-
-            <para>
-                Like in the <code>from()</code> and <code>group()</code>
-                methods, column names are quoted as identifiers, unless they
-                contain contain parentheses or are an object of type
-                Zend_Db_Expr.
-            </para>
-
-            <example id="zend.db.select.building.order.example">
-                <title>Example of the order() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT p."product_id", COUNT(*) AS line_items_per_product
-//   FROM "products" AS p JOIN "line_items" AS l
-//     ON p.product_id = l.product_id
-//   GROUP BY p.product_id
-//   ORDER BY "line_items_per_product" DESC, "product_id"
-
-$select = $db->select()
-    ->from(array('p' => 'products'),
-        array('product_id'))
-    ->join(array('l' => 'line_items'),
-        'p.product_id = l.product_id',
-        array('line_items_per_product' => 'COUNT(*)'))
-    ->group('p.product_id')
-    ->order(array('line_items_per_product DESC', 'product_id'));]]></programlisting>
-            </example>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.building.limit">
-
-            <title>Adding a LIMIT Clause</title>
-
-            <para>
-                Some RDBMS brands extend SQL with a query clause known as the
-                <code>LIMIT</code> clause.  This clause reduces the number of
-                rows in the result set to at most a number you specify.
-                You can also specify to skip a number of rows before starting
-                to output.
-                This feature makes it easy to take a subset of a result set,
-                for example when displaying query results on progressive pages
-                of output.
-            </para>
-
-            <para>
-                In Zend_Db_Select, you can use the <code>limit()</code> method
-                to specify the count of rows and the number of rows to skip.
-                The first argument to this method is the desired count of rows.
-                The second argument is the number of rows to skip.
-            </para>
-
-            <example id="zend.db.select.building.limit.example">
-                <title>Example of the limit() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT p."product_id", p."product_name"
-//   FROM "products" AS p
-//   LIMIT 10, 20
-
-$select = $db->select()
-    ->from(array('p' => 'products'), array('product_id', 'product_name'))
-    ->limit(10, 20);]]></programlisting>
-            </example>
-
-            <note>
-                <para>
-                    The <code>LIMIT</code> syntax is not supported by all RDBMS
-                    brands.  Some RDBMS require different syntax to support
-                    similar functionality.  Each Zend_Db_Adapter_Abstract class
-                    includes a method to produce SQL appropriate for that RDBMS.
-                </para>
-            </note>
-
-            <para>
-                Use the <code>limitPage()</code> method for an alternative way
-                to specify row count and offset.  This method allows you to
-                limit the result set to one of a series of fixed-length subsets
-                of rows from the query's total result set.  In other words, you
-                specify the length of a "page" of results, and the ordinal
-                number of the single page of results you want the query to return.
-                The page number is the first argument of the
-                <code>limitPage()</code> method, and the page length is the
-                second argument.  Both arguments are required; they have no
-                default values.
-            </para>
-
-            <example id="zend.db.select.building.limit.example2">
-                <title>Example of the limitPage() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT p."product_id", p."product_name"
-//   FROM "products" AS p
-//   LIMIT 10, 20
-
-$select = $db->select()
-    ->from(array('p' => 'products'), array('product_id', 'product_name'))
-    ->limitPage(2, 10);]]></programlisting>
-            </example>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.building.distinct">
-
-            <title>Adding the DISTINCT Query Modifier</title>
-
-            <para>
-                The <code>distinct()</code> method enables you to add the
-                <code>DISTINCT</code> keyword to your SQL query.
-            </para>
-
-            <example id="zend.db.select.building.distinct.example">
-                <title>Example of the distinct() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT DISTINCT p."product_name"
-//   FROM "products" AS p
-
-$select = $db->select()
-    ->distinct()
-    ->from(array('p' => 'products'), 'product_name');]]></programlisting>
-            </example>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.building.for-update">
-
-            <title>Adding the FOR UPDATE Query Modifier</title>
-
-            <para>
-                The <code>forUpdate()</code> method enables you to add the
-                <code>FOR UPDATE</code> modifier to your SQL query.
-            </para>
-
-            <example id="zend.db.select.building.for-update.example">
-                <title>Example of forUpdate() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT FOR UPDATE p.*
-//   FROM "products" AS p
-
-$select = $db->select()
-    ->forUpdate()
-    ->from(array('p' => 'products'));]]></programlisting>
-            </example>
-
-        </sect3>
-
-    </sect2>
-
-    <sect2 id="zend.db.select.execute">
-
-        <title>Executing Select Queries</title>
-
-        <para>
-            This section describes how to execute the query represented by a
-            Zend_Db_Select object.
-        </para>
-
-        <sect3 id="zend.db.select.execute.query-adapter">
-
-            <title>Executing Select Queries from the Db Adapter</title>
-
-            <para>
-                You can execute the query represented by the Zend_Db_Select
-                object by passing it as the first argument to the
-                <code>query()</code> method of a Zend_Db_Adapter_Abstract
-                object.  Use the Zend_Db_Select objects instead of a string
-                query.
-            </para>
-
-            <para>
-                The <code>query()</code> method returns an object of type
-                Zend_Db_Statement or PDOStatement, depending on the adapter type.
-            </para>
-
-            <example id="zend.db.select.execute.query-adapter.example">
-                <title>Example using the Db adapter's query() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-$select = $db->select()
-  ->from('products');
-
-$stmt = $db->query($select);
-$result = $stmt->fetchAll();]]></programlisting>
-            </example>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.execute.query-select">
-
-            <title>Executing Select Queries from the Object</title>
-
-            <para>
-                As an alternative to using the <code>query()</code> method
-                of the adapter object, you can use the <code>query()</code>
-                method of the Zend_Db_Select object.
-                Both methods return an object of type Zend_Db_Statement or
-                PDOStatement, depending on the adapter type.
-            </para>
-
-            <example id="zend.db.select.execute.query-select.example">
-                <title>Example using the Select object's query method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-$select = $db->select()
-    ->from('products');
-
-$stmt = $select->query();
-$result = $stmt->fetchAll();]]></programlisting>
-            </example>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.execute.tostring">
-
-            <title>Converting a Select Object to a SQL String</title>
-
-            <para>
-                If you need access to a string representation of the SQL
-                query corresponding to the Zend_Db_Select object, use
-                the <code>__toString()</code> method.
-            </para>
-
-            <example id="zend.db.select.execute.tostring.example">
-                <title>Example of the __toString() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-$select = $db->select()
-    ->from('products');
-
-$sql = $select->__toString();
-echo "$sql\n";
-
-// The output is the string:
-//   SELECT * FROM "products"]]></programlisting>
-            </example>
-
-        </sect3>
-
-    </sect2>
-
-    <sect2 id="zend.db.select.other">
-
-        <title>Other methods</title>
-
-        <para>
-            This section describes other methods of the Zend_Db_Select class
-            that are not covered above:  <code>getPart()</code> and
-            <code>reset()</code>.
-        </para>
-
-        <sect3 id="zend.db.select.other.get-part">
-
-            <title>Retrieving Parts of the Select Object</title>
-
-            <para>
-                The <code>getPart()</code> method returns a representation
-                of one part of your SQL query.  For example, you can use this
-                method to return the array of expressions for the
-                <code>WHERE</code> clause, or the array of columns
-                (or column expressions) that are in the <code>SELECT</code>
-                list, or the values of the count and offset for the
-                <code>LIMIT</code> clause.
-            </para>
-
-            <para>
-                The return value is not a string containing a fragment of SQL
-                syntax.  The return value is an internal representation, which
-                is typically an array structure containing values and
-                expressions.  Each part of the query has a different structure.
-            </para>
-
-            <para>
-                The single argument to the <code>getPart()</code> method is
-                a string that identifies which part of the Select query to
-                return.  For example, the string <code>'from'</code>
-                identifies the part of the Select object that stores
-                information about the tables in the <code>FROM</code> clause,
-                including joined tables.
-            </para>
-
-            <para>
-                The Zend_Db_Select class defines constants you can use for
-                parts of the SQL query.  You can use these constant definitions,
-                or you can the literal strings.
-            </para>
-
-            <table id="zend.db.select.other.get-part.table">
-                <title>Constants used by getPart() and reset()</title>
-                <tgroup cols="2">
-                    <thead>
-                        <row>
-                            <entry>Constant</entry>
-                            <entry>String value</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry><code>Zend_Db_Select::DISTINCT</code></entry>
-                            <entry><code>'distinct'</code></entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Db_Select::FOR_UPDATE</code></entry>
-                            <entry><code>'forupdate'</code></entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Db_Select::COLUMNS</code></entry>
-                            <entry><code>'columns'</code></entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Db_Select::FROM</code></entry>
-                            <entry><code>'from'</code></entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Db_Select::WHERE</code></entry>
-                            <entry><code>'where'</code></entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Db_Select::GROUP</code></entry>
-                            <entry><code>'group'</code></entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Db_Select::HAVING</code></entry>
-                            <entry><code>'having'</code></entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Db_Select::ORDER</code></entry>
-                            <entry><code>'order'</code></entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Db_Select::LIMIT_COUNT</code></entry>
-                            <entry><code>'limitcount'</code></entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Db_Select::LIMIT_OFFSET</code></entry>
-                            <entry><code>'limitoffset'</code></entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </table>
-
-            <example id="zend.db.select.other.get-part.example">
-                <title>Example of the getPart() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-$select = $db->select()
-    ->from('products')
-    ->order('product_id');
-
-// You can use a string literal to specify the part
-$orderData = $select->getPart( 'order' );
-
-// You can use a constant to specify the same part
-$orderData = $select->getPart( Zend_Db_Select::ORDER );
-
-// The return value may be an array structure, not a string.
-// Each part has a different structure.
-print_r( $orderData );]]></programlisting>
-            </example>
-
-        </sect3>
-
-        <sect3 id="zend.db.select.other.reset">
-
-            <title>Resetting Parts of the Select Object</title>
-
-            <para>
-                The <code>reset()</code> method enables you to clear one
-                specified part of the SQL query, or else clear all parts of
-                the SQL query if you omit the argument.
-            </para>
-
-            <para>
-                The single argument is optional.  You can specify the part
-                of the query to clear, using the same strings you used in
-                the argument to the <code>getPart()</code> method.
-                The part of the query you specify is reset to a default state.
-            </para>
-
-            <para>
-                If you omit the parameter, <code>reset()</code> changes all
-                parts of the query to their default state.  This makes the
-                Zend_Db_Select object equivalent to a new object, as though you
-                had just instantiated it.
-            </para>
-
-            <example id="zend.db.select.other.reset.example">
-                <title>Example of the reset() method</title>
-                <programlisting role="php"><![CDATA[<?php
-
-// Build this query:
-//   SELECT p.*
-//   FROM "products" AS p
-//   ORDER BY "product_name"
-
-$select = $db->select()
-    ->from(array('p' => 'products')
-    ->order('product_name');
-
-// Changed requirement, instead order by a different columns:
-//   SELECT p.*
-//   FROM "products" AS p
-//   ORDER BY "product_id"
-
-// Clear one part so we can redefine it
-$select->reset( Zend_Db_Select::ORDER );
-
-// And specify a different column
-$select->order('product_id');
-
-// Clear all parts of the query
-$select->reset();]]></programlisting>
-            </example>
-
-        </sect3>
-
-    </sect2>
-
-</sect1>
-<!--
-vim:se ts=4 sw=4 et:
--->

+ 0 - 1076
documentation/manual/pt-br/module_specs/Zend_Service_Amazon.xml

@@ -1,1076 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<sect1 id="zend.service.amazon">
-  <title>Zend_Service_Amazon</title>
-
-  <sect2 id="zend.service.amazon.introduction">
-    <title>Introdução</title>
-
-    <para><code>Zend_Service_Amazon</code> é uma simples API para utilização
-    dos web services do Amazon. <code>Zend_Service_Amazon</code> possui duas
-    APIs: uma mais tradicional que segue o padrão da própria Amazon API, e uma
-    simples API de consultas para facilitar a construção de pesquisas mais
-    complexas.</para>
-
-    <para><code>Zend_Service_Amazon</code> dá aos desenvolvedores a capacidade
-    de recuperar informações como se estivessem accessando os sites Amazon.com
-    diretamente através da Amazon Web Services API. Exemplos incluídos:
-    <itemizedlist>
-        <listitem>
-            <para>
-                Armazenar informações de ítens, como imagens, descrições, preços, entre outros.
-            </para>
-        </listitem>
-        <listitem>
-            <para>
-                Revisões editoriais e por parte do cliente.
-            </para>
-        </listitem>
-        <listitem>
-            <para>
-                Produtos similares e acessórios.
-            </para>
-        </listitem>
-        <listitem>
-            <para>
-                Ofertas do Amazon.com.
-            </para>
-        </listitem>
-        <listitem>
-            <para>
-                Listas do tipo ListMania.
-            </para>
-        </listitem>
-      </itemizedlist></para>
-
-    <para>Para usar o <code>Zend_Service_Amazon</code>, você deve possuir uma
-    chave de desenvolvedor para acessar a Amazon API. Para obter uma chave e
-    outras informações, por favor visite o web site <ulink
-    url="http://www.amazon.com/gp/aws/landing.html">Amazon Web
-    Services</ulink>.</para>
-
-    <note>
-        <title>Attention</title>
-        <para>
-            Sua chave de desenvolvedor Amazon API está ligada à sua identificação Amazon, então, tome medidas de segurança apropriadas para garantir a privacidade de sua chave.
-        </para>
-    </note>
-
-    <example>
-      <title>Busca no Amazon usando a API tradicional</title>
-
-      <para>Neste exemplo, pesquisamos por livros de PHP no Amazon, executando
-      um laço para imprimir os resultados.</para>
-
-      <programlisting>&lt;?php
-require_once 'Zend/Service/Amazon.php';
-$amazon = new Zend_Service_Amazon('AMAZON_API_KEY&amp;');
-$response = $amazon-&gt;itemSearch(array('SearchIndex' =&gt; 'Books', 'Keywords' =&gt; 'php'));
-foreach ($response as $r) {
-    echo $r-&gt;Title .'&lt;br /&gt;';
-}
-?&gt;       </programlisting>
-    </example>
-
-    <example>
-      <title>Busca no Amazon usando a Query API</title>
-
-      <para>Aqui, nós pesquisamos por livros de PHP no Amazon, mas usando a
-      API de consulta, que implementa o padrão de projeto "Fluent
-      Interface".</para>
-
-      <programlisting>&lt;?php
-require_once 'Zend/Service/Amazon/Query.php';
-$query = new Zend_Service_Amazon_Query('AMAZON_API_KEY');
-$query-&gt;category('Books')-&gt;Keywords('PHP');
-$results = $query-&gt;search();
-foreach ($results as $result) {
-    echo $result-&gt;Title .'&lt;br /&gt;';
-}
-?&gt;       </programlisting>
-    </example>
-  </sect2>
-
-  <sect2 id="zend.service.amazon.countrycodes">
-    <title>Códigos de Países</title>
-
-    <para>Por padrão, <code>Zend_Service_Amazon</code> conecta ao web service
-    do Amazon localizado nos Estado Unidos ("<code>US</code>"). Para
-    conectar-se a um país diferente, simplesmente especifique a respectiva
-    string de código de país como segundo parâmetro para o construtor:</para>
-
-    <example>
-      <title>Selecionando o Amazon Web Service de um país</title>
-
-      <programlisting>&lt;?php
-// Connect to Amazon in Japan
-require_once 'Zend/Service/Amazon.php';
-$amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'JP');
-?&gt;       </programlisting>
-
-    </example>
-
-    <note>
-        <title>Country codes</title>
-        <para>
-            Códigos válidos podem ser: <code>CA</code>, <code>DE</code>,
-            <code>FR</code>, <code>JP</code>, <code>UK</code>, e
-            <code>US</code>.
-        </para>
-    </note>
-  </sect2>
-
-  <sect2 id="zend.service.amazon.itemlookup">
-    <title>Procurando por um ítem específico do Amazon com o código
-    ASIN</title>
-
-    <para>O método <code>itemLookup()</code> oferece a capacidade de procurar
-    por um ítem em particular quando o código ASIN é conhecido.</para>
-
-    <example>
-      <title>Procurando por um ítem específico no Amazon usando ASIN</title>
-
-      <programlisting>&lt;?php
-require_once 'Zend/Service/Amazon.php';
-$amazon = new Zend_Service_Amazon('AMAZON_API_KEY');
-$item = $amazon-&gt;itemLookup('B0000A432X');
-?&gt;       </programlisting>
-    </example>
-
-    <para>O método <code>itemLookup()</code> também aceita um segundo parâmetro opcional para lidar com as opções de busca. Para maiores detalhes, incluíndo uma lista de opções disponíveis, por favor consulte a <ulink
-    url="http://www.amazon.com/gp/aws/sdk/main.html/103-9285448-4703844?s=AWSEcommerceService&amp;v=2005-10-05&amp;p=ApiReference/ItemLookupOperation"> respectiva documentação do Amazon
-    </ulink>.</para>
-  </sect2>
-
-  <sect2 id="zend.service.amazon.itemsearch">
-    <title>Executando pesquisas de ítens no Amazon</title>
-
-    <para>Efetuar buscas de ítens, baseando-se em um dos vários critérios de busca disponíveis, são tarefas simples se empregado o método <code>itemSearch()</code>, como mostrado no exemplo seguinte:</para>
-
-    <example>
-      <title>Efetuando buscas de ítens no Amazon</title>
-
-      <programlisting>&lt;?php
-require_once 'Zend/Service/Amazon.php';
-$amazon = new Zend_Service_Amazon('AMAZON_API_KEY');
-$response = $amazon-&gt;itemSearch(array('SearchIndex' =&gt; 'Books', 'Keywords' =&gt; 'php'));
-foreach($response as $r) {
-    echo $r-&gt;Title .'&lt;br /&gt;';
-}
-?&gt;       </programlisting>
-    </example>
-
-    <para>O método <code>itemSearch()</code> aceita um simples array de parâmetros para lidar com as opções de busca. Para mais detalhes, incluíndo uma lista de opções disponíveis, consulte a <ulink
-    url="http://www.amazon.com/gp/aws/sdk/main.html/103-9285448-4703844?s=AWSEcommerceService&amp;v=2005-10-05&amp;p=ApiReference/ItemSearchOperation"> respectiva
-    documentação do Amazon</ulink></para>
-
-    <tip>
-      <para>A classe
-
-      <link linkend="zend.service.amazon.query">
-        <code>Zend_Service_Amazon_Query</code>
-      </link>
-
-      é um meio fácil de usar um encapsulamento deste método. </para>
-    </tip>
-  </sect2>
-<sect2 id="zend.service.amazon.query">
-  <title>Usando a Query API Alternativa</title>
-
-  <sect3 id="zend.service.amazon.query.introduction">
-    <title>Introdução</title>
-
-    <para><code>Zend_Service_Amazon_Query</code> oferece uma API alternativa
-    para utilizar o Amazon Web Service. A API alternetiva utiliza o padrão de
-    projeto "Fluent Interface". Ou seja, todas as chamadas são feitas usando
-    métodos encadeados (ex:
-    <code>$obj-&gt;method()-&gt;method2($arg)</code>)</para>
-
-    <para>A API <code>Zend_Service_Amazon_Query</code> usa sobrecarga para
-    facilitar a definição dos ítens de busca, permitindo buscas baseadas nos
-    critérios especificados. Cada uma das opções é implementada como uma
-    chamada a método, e cada argumento respectivo, corresponde ao nome da
-    opção:</para>
-
-    <example>
-      <title>Pesquisando o Amazon usando a Query API Alternativa</title>
-
-      <para>Neste exemplo, a Query API alternativa é usada como uma interface
-      "fluente" para especificar opções e seus respectivos valores:</para>
-
-      <programlisting>&lt;?php
-require_once 'Zend/Service/Amazon/Query.php';
-$query = new Zend_Service_Amazon_Query('MY_API_KEY');
-$query-&gt;Category('Books')-&gt;Keywords('PHP');
-$results = $query-&gt;search();
-foreach ($results as $result) {
-    echo $result-&gt;Title .'&lt;br /&gt;';
-}
-?&gt;       </programlisting>
-
-      <para>Isto atribui à opção <code>Category</code> o valor "Books" e à
-      opção <code>Keywords</code> o valor "PHP".</para>
-
-      <para>Para mais informações e opções disponíveis, consulte a <ulink
-      url="http://www.amazon.com/gp/aws/sdk/main.html/102-9041115-9057709?s=AWSEcommerceService&amp;v=2005-10-05&amp;p=ApiReference/ItemSearchOperation">documentação
-      do Amazon </ulink> específica ao assunto.</para>
-    </example>
-  </sect3>
-</sect2>
-<sect2 id="zend.service.amazon.classes">
-  <title>Classes Zend_Service_Amazon</title>
-
-  <para>As classes abaixo listadas são retornadas pelos métodos <link
-  linkend="zend.service.amazon.itemlookup"><code>Zend_Service_Amazon::itemLookup()</code></link>
-  e <link
-  linkend="zend.service.amazon.itemsearch"><code>Zend_Service_Amazon::itemSearch()</code></link>:
-  <itemizedlist>
-      <listitem>
-        <para><link
-        linkend="zend.service.amazon.classes.item"><code>Zend_Service_Amazon_Item</code></link></para>
-      </listitem>
-
-      <listitem>
-        <para><link
-        linkend="zend.service.amazon.classes.image"><code>Zend_Service_Amazon_Image</code></link></para>
-      </listitem>
-
-      <listitem>
-        <para><link
-        linkend="zend.service.amazon.classes.resultset"><code>Zend_Service_Amazon_ResultSet</code></link></para>
-      </listitem>
-
-      <listitem>
-        <para><link
-        linkend="zend.service.amazon.classes.offerset"><code>Zend_Service_Amazon_OfferSet</code></link></para>
-      </listitem>
-
-      <listitem>
-        <para><link
-        linkend="zend.service.amazon.classes.offer"><code>Zend_Service_Amazon_Offer</code></link></para>
-      </listitem>
-
-      <listitem>
-        <para><link
-        linkend="zend.service.amazon.classes.similarproduct"><code>Zend_Service_Amazon_SimilarProduct</code></link></para>
-      </listitem>
-
-      <listitem>
-        <para><link
-        linkend="zend.service.amazon.classes.accessories"><code>Zend_Service_Amazon_Accessories</code></link></para>
-      </listitem>
-
-      <listitem>
-        <para><link
-        linkend="zend.service.amazon.classes.customerreview"><code>Zend_Service_Amazon_CustomerReview</code></link></para>
-      </listitem>
-
-      <listitem>
-        <para><link
-        linkend="zend.service.amazon.classes.editorialreview"><code>Zend_Service_Amazon_EditorialReview</code></link></para>
-      </listitem>
-
-      <listitem>
-        <para><link
-        linkend="zend.service.amazon.classes.listmania"><code>Zend_Service_Amazon_ListMania</code></link></para>
-      </listitem>
-    </itemizedlist></para>
-
-  <sect3 id="zend.service.amazon.classes.item">
-    <title>Zend_Service_Amazon_Item</title>
-
-    <para><code>Zend_Service_Amazon_Item</code> é uma classe usada para
-    representar um ítem do Amazon retornado pelo web service. Ele abrange
-    todos os atributos dos ítens, incluíndo título, descrição, críticas,
-    etc.</para>
-
-    <sect4 id="zend.service.amazon.classes.item.asxml">
-      <title>Zend_Service_Amazon_Item::asXML()</title>
-
-      <para>
-        <methodsynopsis>
-          <type>string</type>
-
-          <methodname>asXML</methodname>
-
-          <void />
-        </methodsynopsis>
-      </para>
-
-      <para>Retorna o XML original para o ítem pesquisado.</para>
-    </sect4>
-
-    <sect4 id="zend.service.amazon.classes.item.properties">
-      <title>Propriedades</title>
-
-      <para><code>Zend_Service_Amazon_Item</code> possui algumas propriedades
-      que estão diretamente relacionadas com suas similares na API padrão do
-      Amazon API.</para>
-
-      <table>
-        <title>Propriedade de Zend_Service_Amazon_Item</title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Nome</entry>
-
-              <entry>Tipo</entry>
-
-              <entry>Descrição</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>ASIN</entry>
-
-              <entry>string</entry>
-
-              <entry>ID do ítem</entry>
-            </row>
-
-            <row>
-              <entry>DetailPageURL</entry>
-
-              <entry>string</entry>
-
-              <entry>URL para a página de detalhes do ítem</entry>
-            </row>
-
-            <row>
-              <entry>SalesRank</entry>
-
-              <entry>string</entry>
-
-              <entry>Pontuação de vendas para o ítem</entry>
-            </row>
-
-            <row>
-              <entry>SmallImage</entry>
-
-              <entry>Zend_Service_Amazon_Image</entry>
-
-              <entry>Imagem reduzida para o ítem</entry>
-            </row>
-
-            <row>
-              <entry>MediumImage</entry>
-
-              <entry>Zend_Service_Amazon_Image</entry>
-
-              <entry>Imagem de tamanho médio para o ítem</entry>
-            </row>
-
-            <row>
-              <entry>LargeImage</entry>
-
-              <entry>Zend_Service_Amazon_Image</entry>
-
-              <entry>Imagem grande para o ítem</entry>
-            </row>
-
-            <row>
-              <entry>Subjects</entry>
-
-              <entry>array</entry>
-
-              <entry>Assunto do ítem</entry>
-            </row>
-
-            <row>
-              <entry>Offers</entry>
-
-              <entry>
-                <code>
-                  <link
-                  linkend="zend.service.amazon.classes.offerset">Zend_Service_Amazon_OfferSet</link>
-                </code>
-              </entry>
-
-              <entry>Resumo de ofertas e Ofertas para o ítem</entry>
-            </row>
-
-            <row>
-              <entry>CustomerReviews</entry>
-
-              <entry>array</entry>
-
-              <entry>Criticas dos clientes representadas como um array de
-              objetos <code>
-                  <link
-                  linkend="zend.service.amazon.classes.customerreview">Zend_Service_Amazon_CustomerReview</link>
-                </code></entry>
-            </row>
-
-            <row>
-              <entry>EditorialReviews</entry>
-
-              <entry>array</entry>
-
-              <entry>Críticas editoriais representadas como um array de
-              objetos <code>
-                  <link
-                  linkend="zend.service.amazon.classes.editorialreview">Zend_Service_Amazon_EditorialReview</link>
-                </code></entry>
-            </row>
-
-            <row>
-              <entry>SimilarProducts</entry>
-
-              <entry>array</entry>
-
-              <entry>Produtos similares representados como um array de objetos
-              <code>
-                  <link
-                  linkend="zend.service.amazon.classes.similarproduct">Zend_Service_Amazon_SimilarProduct</link>
-                </code></entry>
-            </row>
-
-            <row>
-              <entry>Accessories</entry>
-
-              <entry>array</entry>
-
-              <entry>Acessórios para o ítem representadas como um array de
-              objetos <code>
-                  <link
-                  linkend="zend.service.amazon.classes.accessories">Zend_Service_Amazon_Accessories</link>
-                </code></entry>
-            </row>
-
-            <row>
-              <entry>Tracks</entry>
-
-              <entry>array</entry>
-
-              <entry>Um array de números de trilhas e nomes para DVDs e CDs de
-              música</entry>
-            </row>
-
-            <row>
-              <entry>ListmaniaLists</entry>
-
-              <entry>array</entry>
-
-              <entry>Ítem relacionada à lista Listmania como um array de
-              objetos <code>
-                  <link
-                  linkend="zend.service.amazon.classes.listmania">Zend_Service_Amazon_ListmainList</link>
-                </code></entry>
-            </row>
-
-            <row>
-              <entry>PromotionalTag</entry>
-
-              <entry>string</entry>
-
-              <entry>Tag de ítem promocional</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-      <para>
-        <link linkend="zend.service.amazon.classes">Retornar para a Lista de
-        Classes</link>
-      </para>
-    </sect4>
-  </sect3>
-
-  <sect3 id="zend.service.amazon.classes.image">
-    <title>Zend_Service_Amazon_Image</title>
-
-    <para><code>Zend_Service_Amazon_Image</code> representa uma imagem remota
-    de um produto.</para>
-
-    <sect4 id="zend.service.amazon.classes.image.properties">
-      <title>Propriedades</title>
-
-      <table>
-        <title>Propriedades de Zend_Service_Amazon_Image</title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Nome</entry>
-
-              <entry>Tipo</entry>
-
-              <entry>Descrição</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>Url</entry>
-
-              <entry>string</entry>
-
-              <entry>URL remota para a imagem</entry>
-            </row>
-
-            <row>
-              <entry>Height</entry>
-
-              <entry>int</entry>
-
-              <entry>Altura da imagem em pixels</entry>
-            </row>
-
-            <row>
-              <entry>Width</entry>
-
-              <entry>int</entry>
-
-              <entry>Largura da imagem em pixels</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-      <para>
-        <link linkend="zend.service.amazon.classes">Retornar para a Lista de
-        Classes</link>
-      </para>
-    </sect4>
-  </sect3>
-
-  <sect3 id="zend.service.amazon.classes.resultset">
-    <title>Zend_Service_Amazon_ResultSet</title>
-
-    <para>Objetos <code>Zend_Service_Amazon_ResultSet</code> saõ retornados
-    por <link
-    linkend="zend.service.amazon.itemsearch">Zend_Service_Amazon::itemSearch()</link>
-    e permitem a você manusear facilmente os múltiplos resultados
-    retornados.</para>
-
-      <note>
-        <title>Image information</title>
-        <para>
-            Implemente o <code>SeekableIterator</code> para fácil iteração
-            (ex: usando <code>foreach</code>), bem como, acesso direto a uma string
-            específica de resultados usando <code>seek()</code>.
-        </para>
-    </note>
-
-    <sect4 id="zend.service.amazon.classes.resultset.totalresults">
-      <title>Zend_Service_Amazon_ResultSet::totalResults()</title>
-
-      <methodsynopsis>
-        <type>int</type>
-
-        <methodname>totalResults</methodname>
-
-        <void />
-      </methodsynopsis>
-
-      <para>Número total de resultados retornados pela pesquisa</para>
-      <para>
-        <link linkend="zend.service.amazon.classes">Retornar para a Lista de
-        Classes</link>
-      </para>
-    </sect4>
-  </sect3>
-
-  <sect3 id="zend.service.amazon.classes.offerset">
-    <title>Zend_Service_Amazon_OfferSet</title>
-
-    <para>Cada resultado retornado por <link
-    linkend="zend.service.amazon.itemsearch">Zend_Service_Amazon::itemSearch()</link>
-    e <link
-    linkend="zend.service.amazon.itemlookup">Zend_Service_Amazon::itemLookup()</link>
-    contém um objeto <code>Zend_Service_Amazon_OfferSet</code> através do qual
-    o preço do ítem pode ser recuperado.</para>
-
-    <sect4 id="zend.service.amazon.classes.offerset.parameters">
-      <title>Propriedades</title>
-
-      <table>
-        <title>Propriedades de Zend_Service_Amazon_OfferSet</title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Nome</entry>
-
-              <entry>Tipo</entry>
-
-              <entry>Descrição</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>LowestNewPrice</entry>
-
-              <entry>int</entry>
-
-              <entry>Menor preço para o ítem na condição de NOVO</entry>
-            </row>
-
-            <row>
-              <entry>LowestNewPriceCurrency</entry>
-
-              <entry>string</entry>
-
-              <entry>A moeda em que está expresso o
-              <code>LowestNewPrice</code></entry>
-            </row>
-
-            <row>
-              <entry>LowestOldPrice</entry>
-
-              <entry>int</entry>
-
-              <entry>Menor preço para o ítem na condição de USADO</entry>
-            </row>
-
-            <row>
-              <entry>LowestOldPriceCurrency</entry>
-
-              <entry>string</entry>
-
-              <entry>A moeda em que está expresso o
-              <code>LowestOldPrice</code></entry>
-            </row>
-
-            <row>
-              <entry>TotalNew</entry>
-
-              <entry>int</entry>
-
-              <entry>Total de ítens "Novos" disponíveis </entry>
-            </row>
-
-            <row>
-              <entry>TotalUsed</entry>
-
-              <entry>int</entry>
-
-              <entry>Total de ítens "Usados" disponíveis</entry>
-            </row>
-
-            <row>
-              <entry>TotalCollectible</entry>
-
-              <entry>int</entry>
-
-              <entry>Total de ítens "colecionáveis" disponíveis</entry>
-            </row>
-
-            <row>
-              <entry>TotalRefurbished</entry>
-
-              <entry>int</entry>
-
-              <entry>Total de ítens "refurbished" disponíveis</entry>
-            </row>
-
-            <row>
-              <entry>Offers</entry>
-
-              <entry>array</entry>
-
-              <entry>Um array de objetos
-              <code>Zend_Service_Amazon_Offer</code>.</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-      <para>
-        <link linkend="zend.service.amazon.classes">Retornar para a Lista de
-        Classes</link>
-      </para>
-    </sect4>
-  </sect3>
-
-  <sect3 id="zend.service.amazon.classes.offer">
-    <title>Zend_Service_Amazon_Offer</title>
-
-    <para>As ofertas para um dado ítem, são retornadas como objetos
-    <code>Zend_Service_Amazon_Offer</code>.</para>
-
-    <sect4 id="zend.service.amazon.classes.offer.properties">
-      <title>Propriedades de Zend_Service_Amazon_Offer</title>
-      <table>
-        <title>Propriedades</title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Name</entry>
-
-              <entry>Type</entry>
-
-              <entry>Description</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>MerchantId</entry>
-
-              <entry>string</entry>
-
-              <entry>ID Amazon para fornecedores</entry>
-            </row>
-
-            <row>
-              <entry>GlancePage</entry>
-
-              <entry>string</entry>
-
-              <entry>URL para uma página contendo um resumo do
-              fornecedor.</entry>
-            </row>
-
-            <row>
-              <entry>Condition</entry>
-
-              <entry>string</entry>
-
-              <entry>Condição do ítem</entry>
-            </row>
-
-            <row>
-              <entry>OfferListingId</entry>
-
-              <entry>string</entry>
-
-              <entry>ID da listagem de Ofertas </entry>
-            </row>
-
-            <row>
-              <entry>Price</entry>
-
-              <entry>int</entry>
-
-              <entry>Preço do ítem</entry>
-            </row>
-
-            <row>
-              <entry>CurrencyCode</entry>
-
-              <entry>string</entry>
-
-              <entry>Código de moeda para o preço do ítem</entry>
-            </row>
-
-            <row>
-              <entry>Availability</entry>
-
-              <entry>string</entry>
-
-              <entry>Disponibilidade do ítem</entry>
-            </row>
-
-            <row>
-              <entry>IsEligibleForSuperSaverShipping</entry>
-
-              <entry>boolean</entry>
-
-              <entry>Informa se o ítem é elegível para remessa super econômica
-              ou não</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-      <para>
-        <link linkend="zend.service.amazon.classes">Retornar para a Lista de
-        Classes</link>
-      </para>
-    </sect4>
-  </sect3>
-
-  <sect3 id="zend.service.amazon.classes.similarproduct">
-    <title>Zend_Service_Amazon_SimilarProduct</title>
-
-    <para>Ao executar uma busca por ítens, O Amazon também retorna uma lista
-    de produtos similares que podem ser localizados ao seu gosto. Cada um
-    deles é retornado como um objeto
-    <code>Zend_Service_Amazon_SimilarProduct</code>.</para>
-
-    <para>Cada objeto contém a informação necessária para que as requisições
-    subsequentes recuperem informações detalhadas sobre o ítem.</para>
-
-    <sect4 id="zend.service.amazon.classes.similarproduct.properties">
-      <title>Propriedades</title>
-
-      <table>
-        <title>Propriedades de Zend_Service_Amazon_SimilarProduct</title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Name</entry>
-
-              <entry>Type</entry>
-
-              <entry>Description</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>ASIN</entry>
-
-              <entry>string</entry>
-
-              <entry>Identificador único do produto no Amazon (ASIN)</entry>
-            </row>
-
-            <row>
-              <entry>Title</entry>
-
-              <entry>string</entry>
-
-              <entry>Título do Produto</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-      <para>
-        <link linkend="zend.service.amazon.classes">Retornar para a Lista de
-        Classes</link>
-      </para>
-    </sect4>
-  </sect3>
-
-  <sect3 id="zend.service.amazon.classes.accessories">
-    <title>Zend_Service_Amazon_Accessories</title>
-
-    <para>Acessórios para o ítem retornado, são representados como objetos
-    <code>Zend_Service_Amazon_Accessories</code> </para>
-
-    <sect4 id="zend.service.amazon.classes.accessories.properties">
-      <title>Propriedades</title>
-
-      <table>
-        <title>Zend_Service_Amazon_Accessories Properties</title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Name</entry>
-
-              <entry>Type</entry>
-
-              <entry>Description</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>ASIN</entry>
-
-              <entry>string</entry>
-
-              <entry>Identificador único do produto no Amazon (ASIN)</entry>
-            </row>
-
-            <row>
-              <entry>Title</entry>
-
-              <entry>string</entry>
-
-              <entry>Título do Produto</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-      <para>
-        <link linkend="zend.service.amazon.classes">Retornar para a Lista de
-        Classes</link>
-      </para>
-    </sect4>
-  </sect3>
-
-  <sect3 id="zend.service.amazon.classes.customerreview">
-    <title>Zend_Service_Amazon_CustomerReview</title>
-
-    <para>Cada crítica feita pelo cliente é retornada como um objeto
-    <code>Zend_Service_Amazon_CustomerReview</code>.</para>
-
-    <sect4 id="zend.service.amazon.classes.customerreview.properties">
-      <title>Propriedades</title>
-
-      <table>
-        <title>Propriedades de Zend_Service_Amazon_CustomerReview </title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Name</entry>
-
-              <entry>Type</entry>
-
-              <entry>Description</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>Rating</entry>
-
-              <entry>string</entry>
-
-              <entry>Cotação do ítem</entry>
-            </row>
-
-            <row>
-              <entry>HelpfulVotes</entry>
-
-              <entry>string</entry>
-
-              <entry>Votos na "utilidade" da crítica emitida</entry>
-            </row>
-
-            <row>
-              <entry>CustomerId</entry>
-
-              <entry>string</entry>
-
-              <entry>ID do Cliente</entry>
-            </row>
-
-            <row>
-              <entry>TotalVotes</entry>
-
-              <entry>string</entry>
-
-              <entry>Total de votos </entry>
-            </row>
-
-            <row>
-              <entry>Date</entry>
-
-              <entry>string</entry>
-
-              <entry>Data</entry>
-            </row>
-
-            <row>
-              <entry>Summary</entry>
-
-              <entry>string</entry>
-
-              <entry>Resumo</entry>
-            </row>
-
-            <row>
-              <entry>Content</entry>
-
-              <entry>string</entry>
-
-              <entry>Conteúdo</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-      <para>
-        <link linkend="zend.service.amazon.classes">Retornar para a Lista de
-        Classes</link>
-      </para>
-    </sect4>
-  </sect3>
-
-  <sect3 id="zend.service.amazon.classes.editorialreview">
-    <title>Zend_Service_Amazon_EditorialReview</title>
-
-    <para>As críticas editoriais são retornadoas como objetos
-    <code>Zend_Service_Amazon_EditorialReview</code></para>
-
-    <sect4 id="zend.service.amazon.classes.editorialreview.properties">
-      <title>Propriedades</title>
-
-      <table>
-        <title>Propriedades de Zend_Service_Amazon_EditorialReview</title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Name</entry>
-
-              <entry>Type</entry>
-
-              <entry>Description</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>Source</entry>
-
-              <entry>string</entry>
-
-              <entry>Fonte da crítica editorial</entry>
-            </row>
-
-            <row>
-              <entry>Content</entry>
-
-              <entry>string</entry>
-
-              <entry>Conteúdo</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-      <para>
-        <link linkend="zend.service.amazon.classes">Retornar para a Lista de
-        Classes</link>
-      </para>
-    </sect4>
-  </sect3>
-
-  <sect3 id="zend.service.amazon.classes.listmania">
-    <title>Zend_Service_Amazon_Listmania</title>
-
-    <para>Os ítens da lista List Mania são retornados como objetos
-    <code>Zend_Service_Amazon_Listmania</code>.</para>
-
-    <sect4 id="zend.service.amazon.classes.listmania.properties">
-      <title>Propriedades</title>
-
-      <table>
-        <title>Propriedades de Zend_Service_Amazon_Listmania</title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Name</entry>
-
-              <entry>Type</entry>
-
-              <entry>Description</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>ListId</entry>
-
-              <entry>string</entry>
-
-              <entry>List ID</entry>
-            </row>
-
-            <row>
-              <entry>ListName</entry>
-
-              <entry>string</entry>
-
-              <entry>List Name</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-      <para>
-        <link linkend="zend.service.amazon.classes">Retornar para a Lista de
-        Classes</link>
-      </para>
-    </sect4>
-  </sect3>
-</sect2>
-</sect1>
-<!--
-vim:se ts=4 sw=4 et:
--->

+ 0 - 497
documentation/manual/pt-br/module_specs/Zend_Service_Flickr.xml

@@ -1,497 +0,0 @@
-<sect1 id="zend.service.flickr">
-  <title>Zend_Service_Flickr</title>
-
-  <sect2 id="zend.service.flickr.introduction">
-    <title>Introdução às Pesquisas Flickr</title>
-
-    <para><code>Zend_Service_Flickr</code> é uma simples API para usar o
-    Flickr REST Web Service. Para poder usar os Flickr web services, você deve
-    possuir uma API key. Para obter uma chave e maiores informações sobre o
-    Flickr REST Web Service, visite a <ulink
-    url="http://www.flickr.com/services/api/">Flickr API
-    Documentation</ulink>.</para>
-
-    <para>No exemplo seguinte, nós usamos o método <code>tagSearch()</code>
-    para pesquisar por fotos que tenham o valor "php" nas tags.</para>
-
-    <example>
-      <title>Simples pesquisa por fotos Flickr</title>
-
-      <programlisting role="php">&lt;?php
-require_once 'Zend/Service/Flickr.php';
-
-$flickr = new Zend_Service_Flickr('MY_API_KEY');
-
-$results = $flickr-&gt;tagSearch("php");
-
-foreach ($results as $result) {
-    echo $result-&gt;title . '&lt;br /&gt;';
-}
-?&gt;       </programlisting>
-    </example>
-
-    <note>
-      <para><code>tagSearch()</code>
-      aceita um array de opções como segundo parâmetro opcional. </para>
-    </note>
-  </sect2>
-
-  <sect2 id="zend.service.flickr.finding-users">
-    <title>Localizando Usuários Flickr</title>
-
-    <para><code>Zend_Service_Flickr</code> fornece três caminhos variados para
-    obter informações sobre usuários Flickr:</para>
-
-    <itemizedlist>
-      <listitem>
-          <para>
-              <code>userSearch()</code>
-              : Aceita uma string de busca com tags delimitadas por espaços e um array de opções como segundo parâmetro opcional, retornando um objeto
-              <code>Zend_Service_Flickr_ResultSet</code>.
-          </para>
-      </listitem>
-      <listitem>
-          <para>
-              <code>getIdByUsername()</code>
-              : Retorna um user ID associado ao nome de usuário informado.
-          </para>
-      </listitem>
-      <listitem>
-          <para>
-              <code>getIdByEmail()</code>
-              : Retorna um user ID associado ao endereço de email informado.
-          </para>
-      </listitem>
-    </itemizedlist>
-
-    <example>
-      <title>Localizando um usuário Flickr pelo endereço de E-Mail </title>
-
-      <para>Neste exemplo, nós temos um endereço de email de um usuário do
-      Flickr, e usamos o método <code>userSearch()</code> para recuperar
-      informações do usuário:</para>
-
-      <programlisting role="php">&lt;?php
-require_once 'Zend/Service/Flickr.php';
-
-$flickr = new Zend_Service_Flickr('MY_API_KEY');
-
-$results = $flickr-&gt;userSearch($userEmail);
-
-foreach ($results as $result) {
-    echo $result-&gt;title . '&lt;br /&gt;';
-}
-?&gt;       </programlisting>
-    </example>
-  </sect2>
-
-  <sect2 id="zend.service.flickr.getimagedetails">
-
-
-    <title>Recuperando Detalhes de Imagens Flickr Image Details</title>
-
-
-
-    <para>
-    <code>Zend_Service_Flickr</code>
-
-     torna fácil e rápida a recuperação de detalhes de imagens baseada em um dado "image ID". Basta usar o método
-
-    <code>getImageDetails()</code>
-
-    , como mostrado no exemplo seguinte:
-    </para>
-
-    <example>
-      <title>Recuperando Flickr Image Details</title>
-
-      <para>Desde que você conheça o Flickr image ID, recuperar informações
-      sobre a imagem é tarefa simples:</para>
-
-      <programlisting role="php">&lt;?php
-require_once 'Zend/Service/Flickr.php';
-
-$flickr = new Zend_Service_Flickr('MY_API_KEY');
-
-$image = $flickr-&gt;getImageDetails($imageId);
-
-echo "Image ID $imageId is $image-&gt;width x $image-&gt;height pixels.&lt;br /&gt;\n";
-echo "&lt;a href=\"$image-&gt;clickUri\"&gt;Click for Image&lt;/a&gt;\n";
-?&gt;       </programlisting>
-    </example>
-
-
-  </sect2>
-
-<sect2 id="zend.service.flickr.classes">
-  <title>Classes Zend_Service_Flickr</title>
-
-  <para>As seguintes classes são todas retornadas por <code>tagSearch()</code>
-  e <code>userSearch()</code>: <itemizedlist>
-      <listitem>
-        <para><link
-        linkend="zend.service.flickr.classes.resultset"><code>Zend_Service_Flickr_ResultSet</code></link></para>
-      </listitem>
-
-      <listitem>
-        <para><link
-        linkend="zend.service.flickr.classes.result"><code>Zend_Service_Flickr_Result</code></link></para>
-      </listitem>
-
-      <listitem>
-        <para><link
-        linkend="zend.service.flickr.classes.image"><code>Zend_Service_Flickr_Image</code></link></para>
-      </listitem>
-    </itemizedlist></para>
-
-  <sect3 id="zend.service.flickr.classes.resultset">
-    <title>Zend_Service_Flickr_ResultSet</title>
-
-    <para>Representa um conjunto de resultados de uma pesquisa Flickr.</para>
-
-    <note>
-      <para>Implemente o <code>SeekableIterator</code> para facilitar a
-      iteração (ex: usando <code>foreach</code> ), como também o acesso direto
-      a um resultado específico usando <code>seek()</code> .</para>
-    </note>
-
-    <sect4 id="zend.service.flickr.classes.resultset.properties">
-      <title>Propriedades</title>
-
-      <table>
-        <title>Propriedades de Zend_Service_Flickr_ResultSet </title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Nome</entry>
-
-              <entry>Tipo</entry>
-
-              <entry>Descrição</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>totalResultsAvailable</entry>
-
-              <entry>int</entry>
-
-              <entry>Total de resultados disponível</entry>
-            </row>
-
-            <row>
-              <entry>totalResultsReturned</entry>
-
-              <entry>int</entry>
-
-              <entry>Total de resultados retornados </entry>
-            </row>
-
-            <row>
-              <entry>firstResultPosition</entry>
-
-              <entry>int</entry>
-
-              <entry>O deslocamento deste subconjunto de resultados no
-              conjunto de resultados total</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-    </sect4>
-
-    <sect4 id="zend.service.flickr.classes.resultset.totalResults">
-      <title>Zend_Service_Flickr_ResultSet::totalResults()</title>
-
-      <para>
-        <methodsynopsis>
-          <type>int</type>
-
-          <methodname>totalResults</methodname>
-
-          <void />
-        </methodsynopsis>
-      </para>
-
-      <para>Retorna o total de resultados deste conjunto de resultados.</para>
-      <para>
-        <link linkend="zend.service.flickr.classes">Retornar para a Lista de
-        Classes </link>
-      </para>
-    </sect4>
-  </sect3>
-
-  <sect3 id="zend.service.flickr.classes.result">
-    <title>Zend_Service_Flickr_Result</title>
-
-    <para>Um simples imagem resultante de uma busca Flickr</para>
-
-    <sect4 id="zend.service.flickr.classes.result.properties">
-      <title>Propriedades</title>
-
-      <table>
-        <title>Propriedades de Zend_Service_Flickr_Result</title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Nome</entry>
-
-              <entry>Tipo</entry>
-
-              <entry>Descrição</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>id</entry>
-
-              <entry>int</entry>
-
-              <entry>ID da imagem</entry>
-            </row>
-
-            <row>
-              <entry>owner</entry>
-
-              <entry>int</entry>
-
-              <entry>NSID do proprietário da imagem.</entry>
-            </row>
-
-            <row>
-              <entry>secret</entry>
-
-              <entry>string</entry>
-
-              <entry>Uma chave usada na construção da URL.</entry>
-            </row>
-
-            <row>
-              <entry>server</entry>
-
-              <entry>string</entry>
-
-              <entry>O nome do servidor usado na construção da URL.</entry>
-            </row>
-
-            <row>
-              <entry>title</entry>
-
-              <entry>string</entry>
-
-              <entry>O título da foto.</entry>
-            </row>
-
-            <row>
-              <entry>ispublic</entry>
-
-              <entry>boolean</entry>
-
-              <entry>A foto é pública.</entry>
-            </row>
-
-            <row>
-              <entry>isfriend</entry>
-
-              <entry>boolean</entry>
-
-              <entry>A foto é visível para você porque você é amigo do
-              proprietário.</entry>
-            </row>
-
-            <row>
-              <entry>isfamily</entry>
-
-              <entry>boolean</entry>
-
-              <entry>A foto é visível para você porque você é parente do
-              proprietário.</entry>
-            </row>
-
-            <row>
-              <entry>license</entry>
-
-              <entry>string</entry>
-
-              <entry>Licença sob qual a foto foi publicada.</entry>
-            </row>
-
-            <row>
-              <entry>date_upload</entry>
-
-              <entry>string</entry>
-
-              <entry>Data em que a foto foi enviada.</entry>
-            </row>
-
-            <row>
-              <entry>date_taken</entry>
-
-              <entry>string</entry>
-
-              <entry>Data em que a foto foi produzida.</entry>
-            </row>
-
-            <row>
-              <entry>owner_name</entry>
-
-              <entry>string</entry>
-
-              <entry>O nome de tela do proprietário.</entry>
-            </row>
-
-            <row>
-              <entry>icon_server</entry>
-
-              <entry>string</entry>
-
-              <entry>O servidor usado na montagem das URLs dos ícones.</entry>
-            </row>
-
-            <row>
-              <entry>Square</entry>
-
-              <entry>
-                <link
-                linkend="zend.service.flickr.classes.image">Zend_Service_Flickr_Image</link>
-              </entry>
-
-              <entry>Um slide de 75x75 da imagem.</entry>
-            </row>
-
-            <row>
-              <entry>Thumbnail</entry>
-
-              <entry>
-                <link
-                linkend="zend.service.flickr.classes.image">Zend_Service_Flickr_Image</link>
-              </entry>
-
-              <entry>Um slide de 100 pixels da imagem.</entry>
-            </row>
-
-            <row>
-              <entry>Small</entry>
-
-              <entry>
-                <link
-                linkend="zend.service.flickr.classes.image">Zend_Service_Flickr_Image</link>
-              </entry>
-
-              <entry>Um slide de 240 pixels da imagem.</entry>
-            </row>
-
-            <row>
-              <entry>Medium</entry>
-
-              <entry>
-                <link
-                linkend="zend.service.flickr.classes.image">Zend_Service_Flickr_Image</link>
-              </entry>
-
-              <entry>Um slide de 500 pixels da imagem.</entry>
-            </row>
-
-            <row>
-              <entry>Large</entry>
-
-              <entry>
-                <link
-                linkend="zend.service.flickr.classes.image">Zend_Service_Flickr_Image</link>
-              </entry>
-
-              <entry>Um slide de 640 pixels da imagem.</entry>
-            </row>
-
-            <row>
-              <entry>Original</entry>
-
-              <entry>
-                <link
-                linkend="zend.service.flickr.classes.image">Zend_Service_Flickr_Image</link>
-              </entry>
-
-              <entry>A imagem original.</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-      <para>
-        <link linkend="zend.service.flickr.classes">Retornar para a Lista de
-        Classes </link>
-      </para>
-    </sect4>
-  </sect3>
-
-  <sect3 id="zend.service.flickr.classes.image">
-    <title>Zend_Service_Flickr_Image</title>
-
-    <para>Representa uma imagem retornada por uma busca Flickr.</para>
-
-    <sect4 id="zend.service.flickr.classes.image.properties">
-      <title>Propriedades</title>
-
-      <table>
-        <title>Propriedades de Zend_Service_Flickr_Image </title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Nome</entry>
-
-              <entry>Tipo</entry>
-
-              <entry>Descrição</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>uri</entry>
-
-              <entry>string</entry>
-
-              <entry>URI para a imagem original </entry>
-            </row>
-
-            <row>
-              <entry>clickUri</entry>
-
-              <entry>string</entry>
-
-              <entry>URI clicável (ex. a página Flickr) para a imagem</entry>
-            </row>
-
-            <row>
-              <entry>width</entry>
-
-              <entry>int</entry>
-
-              <entry>Largura da imagem</entry>
-            </row>
-
-            <row>
-              <entry>height</entry>
-
-              <entry>int</entry>
-
-              <entry>Altura da imagem</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-      <para>
-        <link linkend="zend.service.flickr.classes">Retornar para a Lista de
-        Classes </link>
-      </para>
-    </sect4>
-  </sect3>
-</sect2>
-</sect1>
-<!--
-vim:se ts=4 sw=4 et:
--->

+ 0 - 434
documentation/manual/pt-br/module_specs/Zend_XmlRpc_Client.xml

@@ -1,434 +0,0 @@
-<sect1 id="zend.xmlrpc.client">
-  <title>Zend_XmlRpc_Client</title>
-
-  <sect2 id="zend.xmlrpc.client.introduction">
-    <title>Introdução</title>
-
-    <para>A forma de utilização do <code>Zend_XmlRpc_Client</code> é muito
-    similar a dos objetos <code>SoapClient</code> (<ulink
-    url="http://www.php.net/soap">extensão SOAP web service</ulink>). Você
-    pode simplesmente chamar os procedimentos de serviço do XML-RPC como
-    métodos de <code>Zend_XmlRpc_Client</code> . Especifique o endereço
-    completo do serviço para o construtor do
-    <code>Zend_XmlRpc_Client</code>.</para>
-
-    <example>
-      <title>Uma requisição XML-RPC básica</title>
-
-      <programlisting role="php">&lt;?php
-/**
- * Connect to framework.zend.com server and an array describing
- * the methods available.
- */
-require_once 'Zend/XmlRpc/Client.php';
-
-$server = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
-
-print_r( $server-&gt;system-&gt;listMethods() );
-
-?&gt;
-            </programlisting>
-    </example>
-
-    <note><para>
-
-
-        <code>Zend_XmlRpc_Client</code>
-
-         tenta, na medida do possível, utilizar métodos remotos como se fossem nativos. Se um método remoto contiver namespaces, como por exemplo
-
-        <code>system.listMethods()</code>
-
-         , a chamada é feita usando encadeamento de objetos em PHP:
-
-        <code>$server-&gt;system-&gt;listMethods()</code>
-
-         .
-     </para></note>
-  </sect2>
-
-  <sect2 id="zend.xmlrpc.client.parameters">
-    <title>Usando parâmetros</title>
-
-    <para>Alguns procedimentos de serviço XML-RPC requerem parâmetros, os
-    parâmetros necessários são passados, como parâmetros, para o método
-    <code>Zend_XmlRpc_Client</code>. Os parâmetros do procedimento XML-RPC
-    devem ser de tipos de dados específicos ao XML-RPC. Os parâmetros podem
-    ser passsados de duas maneiras: tipos nativos do PHP e objetos
-    <code>Zend_XmlRpc_Value</code> que representam os tipos XML-RPC.</para>
-
-    <sect3 id="zend.xmlrpc.client.parameters.php_native">
-      <title>Passando variáveis nativas como parâmetros em PHP</title>
-
-      <para>Um parâmetro passado como variável nativa do PHP, pode ser uma
-      string, um inteiro, um flutuante, um boleano, um array ou um objeto.
-      Neste caso, cada tipo PHP nativo irá ser automaticamente detectado e
-      convertido em um tipo XML-RPC, de acordo com a tabela abaixo:</para>
-
-      <table>
-        <title>Conversão de valores nativos do PHP para tipos XML-RPC</title>
-
-        <tgroup cols="2">
-          <thead>
-            <row>
-              <entry>Tipos nativos do PHP</entry>
-
-              <entry>Tipos XML-RPC</entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>inteiro</entry>
-
-              <entry>int</entry>
-            </row>
-
-            <row>
-              <entry>double</entry>
-
-              <entry>double</entry>
-            </row>
-
-            <row>
-              <entry>boleano</entry>
-
-              <entry>boolean</entry>
-            </row>
-
-            <row>
-              <entry>string</entry>
-
-              <entry>string</entry>
-            </row>
-
-            <row>
-              <entry>array</entry>
-
-              <entry>array</entry>
-            </row>
-
-            <row>
-              <entry>array associativo</entry>
-
-              <entry>struct</entry>
-            </row>
-
-            <row>
-              <entry>objeto</entry>
-
-              <entry>array</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-
-      <programlisting role="php">...
-/** 2 parameters are passed in this procedure
- *  The first parameter is a string that will be auto-converted into an XML-RPC string type
- *  The second parameter is an assosiative array that will be converted into an XML-RPC struct
- */
-
-$p1 = 'parameter 1';
-$p2 = array('name' =&gt; 'Joe', 'age' =&gt; 30);
-
-$service-&gt;serviceProcedure($p1, $p2);
-...
-            </programlisting>
-    </sect3>
-
-    <sect3 id="zend.xmlrpc.client.parameters.xmlrpc_value">
-      <title>Passando objetos <code>Zend_XmlRpc_Value</code> como
-      parâmetros</title>
-
-      <para>Parameters passados como objetos <code>Zend_XmlRpc_Value</code>.
-      Você pode criar uma das instâncias de <code>Zend_XmlRpc_Value</code>
-      para especificar o tipo XML-RPC exato dos seus parâmetros. As razões
-      principais para especificar explicitamente os tipos XML-RPC são:
-      <itemizedlist>
-        <listitem>
-            <para>
-                 Quando você quer assegurar que o tipo correto do parâmetro seja passado ao procedimento (ex: o procedimento exige um inteiro e você pode receber o parâmetro do array $_GET como string)
-            </para>
-          </listitem>
-          <listitem>
-            <para>
-                 Quando o procedimento exige um tipo datetime ou um base64 (que não são tipos nativos do PHP).
-            </para>
-          </listitem>
-          <listitem>
-            <para>
-                 Quando a existe a possibilidade da conversão automática falhar (ex: você quer passar uma estrutura XML-RPC vazia como parâmetro. Estruturas vazias são representadas como arrays vazios em PHP, mas, se você fornecer um array vazio como parãmetro ele irá ser automaticamente convertido para um array XML-RPC, desde que não seja um array associativo)
-            </para>
-          </listitem>
-        </itemizedlist></para>
-
-      <para>Existem duas maneiras de criar um objeto
-      <code>Zend_XmlRpc_Value</code> object: a maneira explícita (chamando o
-      construtor do objeto) ou usando a função estática
-      <code>Zend_XmlRpc_Value::getXmlRpcValue()</code> que irá requerer uma
-      constante XML-RPC.</para>
-
-      <table>
-        <title><code>Objeto Zend_XmlRpc_Value</code> representando os tipos
-        XML-RPC</title>
-
-        <tgroup cols="3">
-          <thead>
-            <row>
-              <entry>Tipo XML-RPC</entry>
-
-              <entry>Constante de comparação
-              <code>Zend_XmlRpc_Value</code></entry>
-
-              <entry>Objeto <code>Zend_XmlRpc_Value</code></entry>
-            </row>
-          </thead>
-
-          <tbody>
-            <row>
-              <entry>int</entry>
-
-              <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_INTEGER</code></entry>
-
-              <entry><code>Zend_XmlRpc_Value_Integer</code></entry>
-            </row>
-
-            <row>
-              <entry>double</entry>
-
-              <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_DOUBLE</code></entry>
-
-              <entry><code>Zend_XmlRpc_Value_Double</code></entry>
-            </row>
-
-            <row>
-              <entry>boolean</entry>
-
-              <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_BOOLEAN</code></entry>
-
-              <entry><code>Zend_XmlRpc_Value_Boolean</code></entry>
-            </row>
-
-            <row>
-              <entry>string</entry>
-
-              <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_STRING</code></entry>
-
-              <entry><code>Zend_XmlRpc_Value_String</code></entry>
-            </row>
-
-            <row>
-              <entry>base64</entry>
-
-              <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_BASE64</code></entry>
-
-              <entry><code>Zend_XmlRpc_Value_Base64</code></entry>
-            </row>
-
-            <row>
-              <entry>dateTime.iso8601</entry>
-
-              <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_DATETIME</code></entry>
-
-              <entry><code>Zend_XmlRpc_Value_DateTime</code></entry>
-            </row>
-
-            <row>
-              <entry>array</entry>
-
-              <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_ARRAY</code></entry>
-
-              <entry><code>Zend_XmlRpc_Value_Array</code></entry>
-            </row>
-
-            <row>
-              <entry>struct</entry>
-
-              <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_STRUCT</code></entry>
-
-              <entry><code>Zend_XmlRpc_Value_Struct</code></entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </table>
-
-      <programlisting role="php">...
-/** 2 parameters are passed to this procedure
- *  The first parameter is an XML-RPC base64 type that is created using the static Zend_XmlRpc_Value::getXmlRpcValue() function
- *  The second parameter is an XML-RPC strcture that is created explictly
- */
-
-$p1 = ZXmlRpcValue::getXmlRpcValue('encoded string', Zend_XmlRpc_Value::XMLRPC_TYPE_BASE64);
-$p2 = new Zend_XmlRpc_Value_Struct(array('name' =&gt; 'Joe', 'age' =&gt; 30));
-
-$service-&gt;serviceProcedure($p1, $p2);
-...
-            </programlisting>
-
-       <note><para>
-           O valor do parâmetro é cedido por uma variável PHP mas irá ser convertido para o tipo específico usando as técnicas de conversão do PHP (ex: se uma string é informada como um valor para o objeto
-
-          <code>Zend_XmlRpc_Value_Integer</code>
-
-          , ele irá ser convertido usando
-
-          <code>(int)$value</code>
-
-          ).
-      </para></note>
-    </sect3>
-
-    <sect3 id="zend.xmlrpc.client.parameters.as_xml">
-      <title>Analisando uma string XML contida em um parâmetro XML-RPC</title>
-
-      <para>Este método de passagem por parâmetros é usado internamente no
-      pacote <code>Zend_XmlRpc</code> e seu uso não é recomendado.</para>
-
-      <para>Se você tiver necessidade de usar este método, você deve usar a
-      função estática <code>Zend_XmlRpc_Value::getXmlRpcValue()</code> para
-      analisar uma string XML em um objeto <code>Zend_XmlRpc_Value</code> que
-      representa o tipo XML-RPC correspondente. A função
-      <code>Zend_XmlRpc_Value::getXmlRpcValue()</code> deve receber dois
-      parâmetros: a string XML e a constante
-      <code>Zend_XmlRpc_Value::XML_STRING</code>.</para>
-    </sect3>
-  </sect2>
-
-  <sect2 id="zend.xmlrpc.client.wsdl">
-    <title>Indicando o tipo dos parâmetros</title>
-
-    <para>A principal diferença entre XML-RPC e web services SOAP é o arquivo
-    WSDL. O protocolo SOAP usualmente possui um arquivo WSDL que descreve a
-    interface para o web service. De acordo com esta interface, o cliente SOAP
-    conhece os tipos de parâmetros que devem ser enviados ao servidor e quais
-    são os tipos dos valores de retorno. Sem o arquivo WSDL, o usuário pode
-    enfrentar problemas para descobrir quais são os tipos.</para>
-
-    <para>O solução do protocolo XML-RPC usa um procedimento de serviço
-    especial chamado <code>system.methodSignature</code>. Este procedimento
-    toma o nome do procedimento como um parâmetro e retorna a assinatura de um
-    dado procedimento. A assinatura contém os respectivos tipos do parâmetro
-    requerido e do valor de retorno do procedimento.</para>
-
-    <note>
-      <para>Nem todos os servidores XML-RPC suportam o procedimento especial
-
-      <code>system.methodSignature</code>
-
-      , e consequentemente, não suportam também a indicação de tipo. </para>
-    </note>
-
-    <para>O <code>Zend_XmlRpc_Client</code> implementa uma gama de tipos de
-    arquivos WSDL para servidores XML-RPC usando o procedimento
-    <code>system.methodSignature</code>. Se solicitado,
-    <code>Zend_XmlRpc_Client</code> irá requisitar uma lista de todos os
-    procedimentos de um servidor XML-RPC, incluindo todas as assinaturas
-    destes procedimentos. Todos esses dados serão gravados em um arquivo XML
-    (similar ao arquivo SOAP WSDL). Quando o mesmo servidor XML-RPC for
-    utilizado novamente, o usuário pode fornecer o arquivo XML e o
-    <code>Zend_XmlRpc_Client</code> irá indicar o tipo de todos os parâmetros
-    para os procedimentos requisitados, de acordo com suas assinaturas.</para>
-
-    <para>O arquivo XML contendo as assinaturas dos procedimentos é criado
-    chamando-se a função<code> Zend_XmlRpc_Client::__getMethodsXml()</code> (a
-    função retorna uma string XML contendo todos os dados das assinaturas).
-    Para selecionar um arquivo XML de assinaturas, o usuário pode passar os
-    dados XML como um parâmetro para o construtor
-    <code>Zend_XmlRpc_Client</code> ou chamar a função
-    <code>Zend_XmlRpc_Client::__setMethodsXml()</code>.</para>
-
-    <example>
-      <title>Chamando um serviço XML-RPC com indicação de tipo</title>
-
-      <programlisting role="php">&lt;?php
-/**
- * Connect to an XML-RPC server, and save it's signatures file (the XML-RPC eqvivilant to a SOAP WSDL file)
- */
-require_once 'Zend/XmlRpc/Client.php';
-
-$service = new Zend_XmlRpc_Client('http://www.example.org/xmlrpc');
-
-file_put_contents('/tmp/xmlrpc-signatures/example.xml', $service-&gt;__getMethodsXml());
-
-/* The $service object contains all the signatures of the XML-RPC server,
-    when the serviceProcedure is called, its parameter ($param) is converted
-    to the necessary type according to the procedure's signature.
- */
-$service-&gt;serviceProcedure($param);
-?&gt;
-            </programlisting>
-
-      <programlisting role="php">&lt;?php
-/**
- * Connect to an XML-RPC server, using an existing signature file, we make sure
- * that the type of the parameters passed to the procedures are of the necessary type
- */
-require_once 'Zend/XmlRpc/Client.php';
-
-$signature_file_xml = file_get_contents('/tmp/xmlrpc-signatures/example.xml');
-$service = new Zend_XmlRpc_Client('http://www.example.org/xmlrpc', 'namespace', $signature_file_xml);
-
-/* The $service object contains all the signatures of the XML-RPC server,
-    when the serviceProcedure is called, its parameter ($param) is converted
-    to the necessary type according to the procedure's signature.
- */
-$service-&gt;serviceProcedure($param);
-?&gt;
-            </programlisting>
-    </example>
-  </sect2>
-
-  <sect2 id="zend.xmlrpc.client.response">
-    <title>Obtendo a resposta</title>
-
-    <para>O procedimento retorna um valor de um tipo XML-RPC. O método
-    <code>Zend_XmlRpc_Client</code> que chama o procedimento XML-RPC retorna
-    um tipo nativo do PHP que foi convertido a partir de um tipo XML-RPC
-    retornado.</para>
-
-    <para>Você pode usar a função
-    <code>Zend_XmlRpc_Client::__getResponse()</code> para recuperar o valor de
-    retorno do procedimento requisitado. A função <code>__getResponse()</code>
-    recebe um parâmetro que indica o tipo do valor de retorno. As opções de
-    resposta são: <itemizedlist>
-        <listitem>
-            <para>
-                <code>Zend_XmlRpc_Client::RESPONSE_PHP_NATIVE</code>
-                - Devolve o valor de retorno do procedimento convertido para um tipo nativo do PHP (converte o tipo XML-RPC em um tipo PHP).
-            </para>
-        </listitem>
-        <listitem>
-            <para>
-                <code>Zend_XmlRpc_Client::RESPONSE_XML_STRING</code>
-                - Retorna a string XML representando a resposta XML-RPC.
-            </para>
-        </listitem>
-        <listitem>
-            <para>
-´               <code>Zend_XmlRpc_Client::RESPONSE_ZXMLRPC_OBJECT</code>
-                - Retorna um objeto
-                <code>Zend_XmlRpc_Value</code>
-                object que representa o tipo XML-RPC retornado.
-            </para>
-        </listitem>
-      </itemizedlist></para>
-
-    <programlisting role="php">...
-$service-&gt;serviceProcedure();
-
-$response = $service-&gt;__getResponse();
-// $response is the PHP variable converted from the XML-RPC type return value
-
-$response = $service-&gt;__getResponse(ZXmlRpcClient::RESPONSE_XML_STRING);
-// $response is a string containing the XML representing the procedure return value
-
-$response = $service-&gt;__getResponse(ZXmlRpcClient::RESPONSE_ZXMLRPC_OBJECT);
-// $response is a Zend_XmlRpc_Value instance representing the XML-RPC type return value
-...
-        </programlisting>
-  </sect2>
-</sect1>
-<!--
-vim:se ts=4 sw=4 et:
--->

+ 0 - 785
documentation/manual/pt-br/ref/coding_standard.xml

@@ -1,785 +0,0 @@
-<appendix id="coding-standard">
-  <title>Padrões de Codificação do Framework Zend para PHP</title>
-    <sect1 id="coding-standard.overview">
-        <title>Visão Geral</title>
-
-        <sect2 id="coding-standard.overview.scope">
-            <title>Escopo</title>
-
-            <para>
-        Este documento provê as linhas principais e recursos para desenvolvedores
-        e times de desenvolvimento no Framework da Zend. São cobertos os seguintes
-    assuntos:
-
-                <itemizedlist>
-                    <listitem>
-                        <para>Formato do Arquivo PHP</para>
-                    </listitem>
-
-                    <listitem>
-                        <para>Convenção de Nomes</para>
-                    </listitem>
-
-                    <listitem>
-                        <para>Estilo de Código</para>
-                    </listitem>
-
-                    <listitem>
-                        <para>Documentação Inline</para>
-                    </listitem>
-                </itemizedlist>
-            </para>
-        </sect2>
-
-        <sect2 id="coding-standard.overview.goals">
-            <title>Objetivos</title>
-
-            <para>
-              Bons padrões de código são importantes em qualquer projeto de desenvolvimento,
-              mas particularmente quando múltiplos desenvolvedores estão trabalhando no mesmo
-              projeto. Ter padrões ajuda a assegurar que o código seja de alta qualidade,
-              tenha poucos bugs e seja de fácil manutenção.
-            </para>
-        </sect2>
-    </sect1>
-
-    <sect1 id="coding-standard.php-file-formatting">
-        <title>Formato do Arquivo PHP</title>
-
-        <sect2 id="coding-standard.php-file-formatting.general">
-            <title>Geral</title>
-
-            <para>
-        Para arquivos que contenham somente código PHP, a tag de fechamento ("?>") não é permitida.
-        Ela não é requerida pelo PHP. Não incluir esta tag evita espaços em branco na saída,
-        deixados acidentalmente.
-            </para>
-
-            <para>
-                <emphasis>IMPORTANTE:</emphasis>A inclusão de dados binários arbitrários, como o permitido por
-                <code>__HALT_COMPILER()</code> é proibido em qualquer framework Zend, arquivo PHP ou arquivos
-                derivados deles. O uso desta funcionalidade só é permitida para scripts especiais de instalação.
-            </para>
-        </sect2>
-
-        <sect2 id="coding-standard.php-file-formatting.indentation">
-            <title>Indentação</title>
-
-            <para>Use indentação de 4 espaços, sem tabs.</para>
-        </sect2>
-
-        <sect2 id="coding-standard.php-file-formatting.max-line-length">
-            <title>Tamanho máximo de linha</title>
-
-            <para>
-        A intenção é utilizar linhas com 80 caracteres, por exemplo, desenvolvedores
-        devem procurar manter seu código próximo a 80 colunas se isso for prático.
-        De qualquer forma, linhas longas são aceitáveis.
-        O tamanho máximo de uma linha de código PHP é de 120 caracteres.
-            </para>
-        </sect2>
-
-        <sect2 id="coding-standard.php-file-formatting.line-termination">
-            <title>Final de Linha</title>
-
-            <para>
-                O final de linha segue o padrão para arquivos texto no Unix. Linhas devem acabar somente com um
-                linefeed (LF). Linefeeds são representados como ordinal 10, ou hexadecimal 0x0A.
-            </para>
-
-            <para>Não use retorno de carro (CR)como nos computadores Macintosh (0x0D).</para>
-
-            <para>
-                Não use a combinação de retorno de carro/linefeed (CRLF) como nos computadores Windows (0x0D, 0x0A).
-            </para>
-        </sect2>
-    </sect1>
-
-    <sect1 id="coding-standard.naming-conventions">
-        <title>Convenções de Nomes</title>
-
-        <sect2 id="coding-standard.naming-conventions.classes">
-            <title>Classes</title>
-
-            <para>
-        O Framework Zend emprega uma convenção por meio dos nomes das
-        classes, diretamente mapeados aos diretórios nos quais estão arquivados.
-    O diretório raiz do Framework Zend é o diretório "Zend/", abaixo do qual
-        todas as classes são arquivadas hierarquicamente.
-            </para>
-
-            <para>
-        Nomes de classes podem conter somente caracteres alfanuméricos. Números em nomes de classes são permitidos,
-        mas desencorajados. Sublinhados são permitidos somente no lugar do separador de caminho -- o nome do arquivo
-        "Zend/Db/Table.php" deve ser mapeado para o nome de classe  "Zend_Db_Table".
-            </para>
-
-            <para>
-        Se o nome de uma classe é composto por mais de uma palavra, a primeira letra de cada nova
-        palavra deve ser maiúscula. Letras maiúsculas sucessivas não são permitidas, por exemplo
-    a classe "Zend_PDF" não é permitida enquanto "Zend_Pdf" é aceita.
-            </para>
-
-            <para>
-        As classes do Framework Zend de autoria da Zend ou de uma das companhias parceiras
-        participantes e distribuídas com o Framework devem sempre iniciar com "Zend_" e
-        devem estar arquivadas sob a hierarquia do diretório "Zend/".
-            </para>
-
-            <para>
-                São exemplos de nomes aceitáveis para classes:
-
-                <programlisting role="php"><![CDATA[
-Zend_Db
-
-Zend_View
-
-Zend_View_Helper
-]]></programlisting>
-
-                <emphasis>IMPORTANTE:</emphasis> Código que opera com o framework mas que não é parte dele,
-        por exemplo, código escrito por um usuário final e não pela Zend ou uma das companhias parceiras,
-        não pode começar com "Zend_".
-            </para>
-        </sect2>
-
-        <sect2 id="coding-standard.naming-conventions.interfaces">
-            <title>Interfaces</title>
-
-            <para>
-        Classes de interface devem seguir as mesmas convenções como outras classes (veja acima),
-        porém deve acabar com a palavra "Interface", como nestes exemplos:
-
-                <programlisting role="php"><![CDATA[
-Zend_Log_Adapter_Interface
-Zend_Controller_Dispatcher_Interface]]></programlisting>
-            </para>
-        </sect2>
-
-        <sect2 id="coding-standard.naming-conventions.filenames">
-            <title>Nomes de Arquivos</title>
-
-            <para>
-        Para todos os outros arquivos, somente caracteres alfanuméricos, sublinhado, e traço "-"
-        são permitidos. Espaços e ponto são proibidos.
-            </para>
-
-            <para>
-                Qualquer arquivo que contenha qualquer código PHP deve acabar com a extensão ".php".
-        Estes exemplos mostram nomes de arquivo aceitáveis para as classes que estes contenham,
-        baseados nos exemplos da seção acima:
-                <programlisting role="php"><![CDATA[
-Zend/Db.php
-
-Zend/Controller/Front.php
-
-Zend/View/Helper/FormRadio.php]]></programlisting>
-
-        Nomes de arquivos devem seguir o mapeamento para nomes de classes descrito acima.
-            </para>
-        </sect2>
-
-        <sect2 id="coding-standard.naming-conventions.functions-and-methods">
-            <title>Funções e Métodos</title>
-
-            <para>
-        Nomes de funções devem conter somente caracteres alfanuméricos. Sublinhados não são permitidos.
-                Números são permitidos nos nomes, mas são desencorajados.
-            </para>
-
-            <para>
-        Nomes de funções devem sempre começar com letra minúscula. Quando um nome consistir em mais de
-        uma palavra, a primeira letra de cada nova palavra deve ser maiúscula. Isto é comumente chamado o
-        método "studlyCaps" ou "camelCaps".
-            </para>
-
-            <para>
-        Verbalização é encorajada. Nomes de funções devem ser tão longos quanto práticos para melhorar
-        o entendimento do código.
-            </para>
-
-            <para>
-        Estes são exemplos de nomes aceitáveis para funções:
-
-                <programlisting role="php"><![CDATA[
-filterInput()
-
-getElementById()
-
-widgetFactory()]]></programlisting>
-            </para>
-
-            <para>
-        Para programação orientada ao objeto, acessores para objetos devem sempre ser prefixados com
-        "get" ou "set". Quando usando padrões de projeto, como o Singleton ou Factory Patterns,
-        o nome do método deve conter o nome do padrão, como prática para que o padrão seja reconhecido na
-        leitura.
-            </para>
-
-            <para>
-        Funções no escopo global ("funções soltas") são permitidas mas desencorajadas.
-        É recomendável que estas funções sejam empacotadas numa classe estática.
-            </para>
-        </sect2>
-
-        <sect2 id="coding-standard.naming-conventions.variables">
-            <title>Variáveis</title>
-
-            <para>
-        Nomes de variáveis devem conter somente caracteres alfanuméricos. Sublinhados não são permitidos.
-        Números são permitidos nos nomes, mas desencorajados.
-            </para>
-
-            <para>
-        Para variáveis membros de classes que são declaradas com o construtor "private" ou "protected",
-        o primeiro caractere do nome da variável deve ser um único sublinhado. Este é o único uso aceitável
-        de sublinhado no nome. Variáveis membros declaradas "public" não podem começar com sublinhado.
-            </para>
-
-            <para>
-        Como nos nomes de funções (veja a seção 3.3 acima) nomes de variáveis devem iniciar com uma letra
-        minúscula e seguir a convenção "camelCaps".
-            </para>
-
-            <para>
-        Verbalização é encorajada. Nomes de variáveis devem ser tão longos quanto práticos. Nomes como
-        "$i" e "$n" são desencorajados para qualquer coisa que não esteja num contexto de loop pequeno.
-        Se um loop contém mais de 20 linhas de código, as variáveis para os indices precisam ter um nome mais
-        descritivo.
-            </para>
-        </sect2>
-
-        <sect2 id="coding-standard.naming-conventions.constants">
-            <title>Constantes</title>
-
-            <para>
-                    Constantes podem conter caracteres alfanuméricos e sublinhado. Números são permitidos nos nomes.
-            </para>
-
-            <para>
-                Constantes devem ter sempre todas suas letras em maiúsculo.
-            </para>
-
-            <para>
-        Constantes devem ser definidas como membros de classe usando o construtor "const".
-        Definir constantes no escopo global com "define" é permitido, mas desencorajado.
-            </para>
-        </sect2>
-    </sect1>
-
-    <sect1 id="coding-standard.coding-style">
-        <title>Estilo de Código</title>
-
-        <sect2 id="coding-standard.coding-style.php-code-demarcation">
-            <title>Demarcação de Código PHP</title>
-
-            <para>
-                Código PHP deve sempre estar delimitado de forma completa, com tags padrão do PHP:
-
-                <programlisting role="php"><![CDATA[
-<?php
-
-?>]]></programlisting>
-            </para>
-
-            <para>
-        Tags curtas não são permitidas.
-        </para>
-        </sect2>
-
-        <sect2 id="coding-standard.coding-style.strings">
-            <title>Strings</title>
-
-            <sect3 id="coding-standard.coding-style.strings.literals">
-                <title>String Literal</title>
-
-                <para>
-            Quando uma string é literal (não contém substituições de variável), deve ser usado apóstrofo
-            ou aspas simples para demarcar o texto.
-
-                    <programlisting role="php"><![CDATA[
-$a = 'Exemplo de Texto';]]></programlisting>
-                </para>
-            </sect3>
-
-            <sect3 id="coding-standard.coding-style.strings.literals-containing-apostrophes">
-                <title>String Literal Contendo Apóstrofos</title>
-
-                <para>
-            Quando uma string literal contém apóstrofos dentro de si, é permitido demarcar
-            o texto com aspas ou "aspas duplas". Isto é especialmente encorajado para declarações SQL:
-
-                    <programlisting role="php"><![CDATA[
-$sql = "SELECT `id`, `name` from `people` WHERE `name`='Fred' OR `name`='Susan'";]]></programlisting>
-
-            A sintaxe acima é preferida ao invés de escapar os apóstrofos.
-                </para>
-            </sect3>
-
-            <sect3 id="coding-standard.coding-style.strings.variable-substitution">
-                <title>Substituição de Variáveis</title>
-
-                <para>
-            A substituição de variáveis é permitida usando qualquer uma das duas formas:
-
-                    <programlisting role="php"><![CDATA[
-$greeting = "Olá $nome, bem-vindo de volta!";
-
-$greeting = "Olá {$nome}, bem-vindo de volta!";]]></programlisting>
-                </para>
-
-                <para>
-                    Por consistência, a forma a seguir não é permitida:
-
-                    <programlisting role="php"><![CDATA[
-$greeting = "Olá ${nome}, bem-vindo de volta!";]]></programlisting>
-                </para>
-            </sect3>
-
-            <sect3 id="coding-standard.coding-style.strings.string-concatenation">
-                <title>Concatenação de String</title>
-
-                <para>
-            Strings devem ser concatenadas usando o operador ".". Um espaço deve sempre
-            ser adicionado antes e depois do operador "." para melhorar a legibilidade:
-
-                    <programlisting role="php"><![CDATA[
-$company = 'Zend' . 'Technologies';]]></programlisting>
-                </para>
-
-                <para>
-            Quando estiver concatenando strings com o operador ".", é permitido quebrar a declaração em
-            várias linhas para melhorar a legibilidade. Nestes casos, cada linha sucessiva deverá ser colocada
-            num bloco com espaço em branco de forma que o operador "." esteja alinhado abaixo do operador "=":
-
-                    <programlisting role="php"><![CDATA[
-$sql = "SELECT `id`, `name` FROM `people` "
-     . "WHERE `name` = 'Susan' "
-     . "ORDER BY `name` ASC ";]]></programlisting>
-                </para>
-            </sect3>
-        </sect2>
-
-        <sect2 id="coding-standard.coding-style.arrays">
-            <title>Arrays</title>
-
-            <sect3 id="coding-standard.coding-style.arrays.numerically-indexed">
-                <title>Arrays Indexados Numericamente</title>
-
-                <para>Números negativos não são permitidos como índices.</para>
-
-                <para>
-            Um array indexado pode começar com qualquer número não negativo, porém
-            isto é desencorajado. É recomendado que todo array tenha um índice inicial 0.
-                </para>
-
-        <para>
-            Quando declarar arrays indexados com o construtor <code>array</code>, um espaço deve ser
-            adicionado depois de cada vírgula para melhorar a legibilidade:
-
-            <programlisting role="php"><![CDATA[
-$sampleArray = array(1, 2, 3, 'Zend', 'Studio');]]></programlisting>
-        </para>
-
-        <para>
-            Também é permitido declarar arrays indexados em várias linhas usando o construtor "array".
-            Neste caso, cada linha sucessiva deve ser colocada num bloco com espaços de forma que
-            o início de cada código alinhe-se conforme mostrado abaixo:
-
-            <programlisting role="php"><![CDATA[
-$sampleArray = array(1, 2, 3, 'Zend', 'Studio',
-            $a, $b, $c,
-            56.44, $d, 500);]]></programlisting>
-        </para>
-       </sect3>
-
-            <sect3 id="coding-standard.coding-style.arrays.associative">
-                <title>Arrays Associativos</title>
-
-                <para>
-            Quando declarar arrays associativos com o construtor <code>array</code>, é recomendado
-            quebrar a declaração em múltiplas linhas. Neste caso, cada linha sucessiva deve estar num bloco
-            com espaço em branco, de forma que as chaves e valores estejam alinhados:
-
-                    <programlisting role="php"><![CDATA[
-$sampleArray = array('firstKey'  => 'firstValue',
-                     'secondKey' => 'secondValue');]]></programlisting>
-                 </para>
-            </sect3>
-        </sect2>
-
-        <sect2 id="coding-standard.coding-style.classes">
-            <title>Classes</title>
-
-            <sect3 id="coding-standard.coding-style.classes.declaration">
-                <title>Declaração de Classes</title>
-
-                <para>
-            Classes devem ser nomeadas seguindo a convenção de nomes.
-                </para><para>
-            A chave de abertura é sempre escrita embaixo do nome da classe (forma de "uma única chave real").
-                </para><para>
-            Toda classe deve ter um bloco de documentação, dentro do padrão do PHPDocumentor.
-                </para><para>
-                    Todo código dentro de uma classe deve estar indentado com quatro espaços.
-                </para><para>
-                    Somente uma classe é permitida por arquivo PHP.
-                </para><para>
-                    Colocar código adicional em um arquivo de classe é permitido mas desencorajado. Nestes arquivos,
-            duas linhas em branco devem separar a classe do código PHP adicional no arquivo.
-                </para><para>
-            Este é um exemplo de declaração aceitável de classe :
-
-                    <programlisting role="php"><![CDATA[
-/**
- * Bloco de documentação aqui
- */
-class SampleClass
-{
-    // conteúdo completo da classe
-    // deve estar indentado com quatro espaços
-}]]></programlisting>
-                </para>
-            </sect3>
-
-            <sect3 id="coding-standard.coding-style.classes.member-variables">
-                <title>Variáveis Membros de Classe</title>
-
-                <para>
-            Variáveis membro devem ser nomeadas de acordo com a convenção de nomes de variáveis.
-                </para><para>
-            Quaisquer variáveis declaradas numa classe devem ser listadas no topo da classe, antes
-            de declarar qualquer função.
-                </para><para>
-            O construtor <code>var</code> não é permitido. Variáveis membro sempre declaram sua
-            visibilidade usando o construtor <code>private</code>, <code>protected</code>
-        ou <code>public</code>. Acessar variáveis membro diretamente tornando-as públicas
-            é permitido mas desencorajado em favor de variáveis de acesso (set/get).
-                </para>
-            </sect3>
-        </sect2>
-
-        <sect2 id="coding-standard.coding-style.functions-and-methods">
-            <title>Funções e Métodos</title>
-
-            <sect3 id="coding-standard.coding-style.functions-and-methods.declaration">
-                <title>Declaração de Funções e Métodos</title>
-
-                <para>
-            Nomes de funções devem seguir a convenção de nomes.
-            </para><para>
-            Funções dentro de classes sempre declaram sua visibilidade usando o
-            construtor <code>private</code>, <code>protected</code> ou <code>public</code>.
-       </para><para>
-            Como classes, a chave de abertura deve sempre ser escrita abaixo do nome da função
-            (forma de "uma única chave real").
-
-                    Não há espaços entre o nome da função e os parênteses para os argumentos.
-             </para><para>
-                    Funções no escopo global são fortemente desencorajadas.
-                </para><para>
-            Este é um exemplo de declaração aceitável de função:
-
-                    <programlisting role="php"><![CDATA[
-/**
- * Bloco de documentação aqui
- */
- class foo
-
-    /**
-    * Bloco de documentação aqui
-    */
-    public function bar()
-    {
-        // todo conteúdo da função
-        // deve ser indentado com quatro espaços
-    }
-}]]></programlisting>
-                </para>
-
-                <para>
-                    <emphasis>NOTA:</emphasis> Passar valores por referência na declaração da função é
-                    permitido somente neste caso:
-
-                    <programlisting role="php"><![CDATA[
-/**
- * Bloco de documentação aqui
- */
- class foo
-
-    /**
-    * Bloco de documentação aqui
-    */
-    public function bar(&$baz)
-    {
-        // todo conteúdo da função
-        // deve ser indentado com quatro espaços
-    }
-}]]></programlisting>
-                </para>
-
-                <para>
-            Passar valores por referência ao chamar a função é proibido.
-                </para>
-
-
-                <para>
-             O valor de retorno não deve estar entre parênteses. Isto pode impedir a boa legibilidade
-             e pode ainda quebrar o código de um método que seja alterado posteriormente para retornar
-             por referência.
-
-                    <programlisting role="php"><![CDATA[
-/**
- * Documentation Block Here
- */
-class Foo
-{
-    /**
-     * ERRADO
-     */
-    public function bar()
-    {
-        return($this->bar);
-    }
-
-    /**
-     * CERTO
-     */
-    public function bar()
-    {
-        return $this->bar;
-    }
-}]]></programlisting>
-                </para>
-
-            </sect3>
-
-            <sect3 id="coding-standard.coding-style.functions-and-methods.usage">
-                <title>Uso de Funções e Métodos</title>
-
-                <para>
-                    Argumentos de funções são separados por um espaço simples depois
-                    da vírgula. Este é um exemplo de chamada de função que tenha três argumentos:
-
-                    <programlisting role="php"><![CDATA[
-threeArguments(1, 2, 3);]]></programlisting>
-                </para>
-
-                <para>
-                    Passar parâmetros por referência na chamada da função é proibido. Veja a seção de
-                    declaração de funções para o modo correto de passar argumentos por referência.
-                </para><para>
-                    Para funções que permitem arrays nos argumentos, a chamada da função pode incluir o
-                    construtor "array" e pode ser dividido em várias linhas para melhorar a legibilidade.
-                    Nestes casos, o padrão para escrever arrays também se aplica:
-
-                    <programlisting role="php"><![CDATA[
-threeArguments(array(1, 2, 3), 2, 3);
-
-threeArguments(array(1, 2, 3, 'Zend', 'Studio',
-                     $a, $b, $c,
-                     56.44, $d, 500), 2, 3);]]></programlisting>
-                </para>
-            </sect3>
-        </sect2>
-
-        <sect2 id="coding-standard.coding-style.control-statements">
-            <title>Instruções de Controle</title>
-
-            <sect3 id="coding-standard.coding-style.control-statements.if-else-elseif">
-                <title>If / Else / Elseif</title>
-
-                <para>
-                    Instruções de controle baseadas nos construtores <code>if</code> e <code>elseif</code>
-                    devem ter um espaço simples antes do parêntese de abertura da condição e um espaço
-                    simples depois do parêntese de fechamento.
-                </para>
-
-                <para>
-                    Dentro das declarações condicionais entre os parênteses, operadores devem ser separados
-                    por espaços para legibilidade. Parênteses internos são encorajados para melhorar o agrupamento
-                    lógico de condicionais extensas.
-                </para>
-
-                <para>
-                    A chave de abertura é sempre escrita na mesma linha da instrução condicional. A chave de
-                    fechamento é sempre escrita em sua própria linha. Qualquer conteúdo dentro das chaves deve
-                    ser indentado por quatro espaços.
-
-                    <programlisting role="php"><![CDATA[
-if ($a != 2) {
-    $a = 2;
-}]]></programlisting>
-                </para>
-
-                <para>
-                    Para instruções "if" que incluem "elseif" ou "else", a formatação deve ser como
-                    nos exemplos:
-
-                    <programlisting role="php"><![CDATA[
-if ($a != 2) {
-    $a = 2;
-} else {
-    $a = 7;
-}
-
-
-if ($a != 2) {
-    $a = 2;
-} elseif ($a == 3) {
-    $a = 4;
-} else {
-    $a = 7;
-}]]></programlisting>
-                    O PHP permite, em certas circunstâncias, que as instruções sejam escritas sem as chaves.
-                    O padrão de código não as diferencia, pois todas instruções "if", "elseif" ou "else"
-                    devem utilizar as chaves.
-                </para>
-
-                <para>
-                    O uso do construtor "elseif" é permitido mas altamente desencorajado em favor da
-                    combinação "else if".
-                </para>
-            </sect3>
-
-            <sect3 id="coding-standards.coding-style.control-statements.switch">
-                <title>Switch</title>
-
-                <para>
-                    Instruções de controle escritas com o construtor "switch" devem ter um espaço simples antes
-                    do parêntese de abertura da instrução condicional e um espaço simples depois do parêntese
-                    de fechamento.
-                </para>
-
-                <para>
-                    Todo conteúdo da instrução "switch" deve ser indentado com quatro espaços. O conteúdo
-                    abaixo de cada instrução "case" deve ser indentado com quatro espaços adicionais.
-                </para>
-
-                <programlisting role="php"><![CDATA[
-switch ($numPeople) {
-    case 1:
-        break;
-
-    case 2:
-        break;
-
-    default:
-        break;
-}]]></programlisting>
-
-                <para>
-                    O construtor <code>default</code> jamais pode ser omitido da instrução <code>switch</code>.
-                </para>
-
-                <para>
-                    <emphasis>NOTA:</emphasis> Algumas vezes é útil escrever uma instrução <code>case</code> que entra no próximo
-                    case sem incluir um <code>break</code> ou <code>return</code>. Para distinguir aqueles cases dos bugs,
-                    qualquer instrução <code>case</code> onde <code>break</code> ou <code>return</code> são omitidos deve
-                    conter o comentário "// break intentionally omitted".
-                </para>
-            </sect3>
-        </sect2>
-
-        <sect2 id="coding-standards.inline-documentation">
-            <title>Documentação Inline </title>
-
-            <sect3 id="coding-standards.inline-documentation.documentation-format">
-                <title>Formato da Documentação</title>
-
-                <para>
-                    Todos blocos de documentação ("dockblocks") devem ser compatíveis com o formato do phpDocumentor.
-                    A descrição do formato do phpDocumentor está além do escopo deste documento.
-                    Para maiores informações, visite: <ulink url="http://phpdoc.org/">http://phpdoc.org"></ulink>
-                </para>
-
-                <para>
-                    Todo código fonte escrito para o Framework Zend ou que trabalhe com o framework deve conter
-                    um bloco de documentação em nível de arquivo no topo de cada arquivo e um bloco de documentação
-                    em nível de classe imediatamente acima de cada classe. Abaixo seguem exemplos destes blocos de
-                    documentação:
-                </para>
-            </sect3>
-
-            <sect3 id="coding-standards.inline-documentation.files">
-                <title>Arquivos</title>
-
-                <para>
-                    Cada arquivo que contenha código PHP deve ter um bloco de cabeçalho no topo do arquivo que
-                    contenha, no mínimo, estas tags do phpDocumentor:
-
-
-                    <programlisting role="php"><![CDATA[
-/**
- * Short description for file
- *
- * Long description for file (if any)...
- *
- * LICENSE: Some license information
- *
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://www.zend.com/license/3_0.txt   PHP License 3.0
- * @version    $Id:$
- * @link       http://dev.zend.com/package/PackageName
- * @since      File available since Release 1.2.0
-*/]]></programlisting>
-                </para>
-            </sect3>
-
-            <sect3 id="coding-standards.inline-documentation.classes">
-                <title>Classes</title>
-
-                <para>
-                    Toda classe deve ter um bloco de documentação que contenha, no mínimo, as seguintes
-                    tags do phpDocumentor:
-
-                    <programlisting role="php"><![CDATA[
-/**
- * Short description for class
- *
- * Long description for class (if any)...
- *
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://www.zend.com/license/3_0.txt   PHP License 3.0
- * @version    Release: @package_version@
- * @link       http://dev.zend.com/package/PackageName
- * @since      Class available since Release 1.2.0
- * @deprecated Class deprecated in Release 2.0.0
- */]]></programlisting>
-                </para>
-            </sect3>
-
-            <sect3 id="coding-standards.inline-documentation.functions">
-                <title>Funções</title>
-
-                <para>
-                Toda função, incluindo métodos de objetos, deve ter um bloco de documentação
-                que contenha, no mínimo, as seguintes tags:
-
-                    <itemizedlist>
-                        <listitem><para>Descrição da função</para></listitem>
-                        <listitem><para>Todos argumentos</para></listitem>
-                        <listitem><para>Todos os possíveis valores de retorno</para></listitem>
-                    </itemizedlist>
-                </para>
-
-                <para>
-                    Não é necessário usar a tag "@access" pois o nível de acesso é conhecido através
-                    do construtor "public", "private", ou "protected" usado para declarar a função.
-                </para>
-
-                <para>
-                    Se uma função/método pode gerar uma excessão, use @throws:
-
-                    <programlisting role="php"><![CDATA[
-@throws exceptionclass [description]
-]]></programlisting>
-                </para>
-            </sect3>
-        </sect2>
-    </sect1>
-
-</appendix>
-<!--
-vim:se ts=4 sw=4 et:
--->