Просмотр исходного кода

UPDATE FILES [DOC-ES]

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@19181 44c647ce-9c0f-0410-b52a-842ac1e357ba
benjamin-gonzales 16 лет назад
Родитель
Сommit
71c11c02ee

+ 52 - 74
documentation/manual/es/module_specs/Zend_CodeGenerator-Examples.xml

@@ -7,12 +7,10 @@
     <example id="zend.codegenerator.examples.class">
         <title>Generando clases PHP</title>
 
-        <para>
-            El siguiente ejemplo genera una clase vacía con una clase de nivel 
-            DocBlock.
-        </para>
+        <para> El siguiente ejemplo genera una clase vacía con una clase de
+            nivel DocBlock. </para>
 
-         <programlisting language="php"><![CDATA[
+        <programlisting language="php"><![CDATA[
 
 $foo      = new Zend_CodeGenerator_Php_Class();
 $docblock = new Zend_CodeGenerator_Php_Docblock(array(
@@ -34,11 +32,9 @@ $foo->setName('Foo')
 echo $foo->generate();
 ]]></programlisting>
 
-        <para>
-            El código anterior resultará en lo siguiente:
-        </para>
+        <para> El código anterior resultará en lo siguiente: </para>
 
-             <programlisting language="php"><![CDATA[
+        <programlisting language="php"><![CDATA[
 
 /**
  * Sample generated class
@@ -60,12 +56,10 @@ class Foo
     <example id="zend.codegenerator.examples.class-properties">
         <title>Generando clases PHP con propiedades de clase</title>
 
-        <para>
-            Basándonos en el ejemplo anterior, ahora agreguemos propiedades a 
-            nuestra clase generada.
-        </para>
+        <para> Basándonos en el ejemplo anterior, ahora agreguemos propiedades a
+            nuestra clase generada. </para>
 
-         <programlisting language="php"><![CDATA[
+        <programlisting language="php"><![CDATA[
 
 $foo      = new Zend_CodeGenerator_Php_Class();
 $docblock = new Zend_CodeGenerator_Php_Docblock(array(
@@ -104,11 +98,9 @@ $foo->setName('Foo')
 echo $foo->generate();
 ]]></programlisting>
 
-        <para>
-            Lo anterior resulta en la siguiente definición de clase:
-        </para>
+        <para> Lo anterior resulta en la siguiente definición de clase: </para>
 
-         <programlisting language="php"><![CDATA[
+        <programlisting language="php"><![CDATA[
 
 /**
  * Sample generated class
@@ -137,13 +129,12 @@ class Foo
         <title>Generando clases PHP con métodos de clase</title>
 
         <para>
-            <classname>Zend_CodeGenerator_Php_Class</classname> le permite 
-            adjuntar métodos con contenido opcional a sus clases. 
-            Los métodos pueden adjuntarse tanto como arrys o como instancias 
-            concretas de <classname>Zend_CodeGenerator_Php_Method</classname>.
-        </para>
+            <classname>Zend_CodeGenerator_Php_Class</classname> le permite
+            adjuntar métodos con contenido opcional a sus clases. Los métodos
+            pueden adjuntarse tanto como arrys o como instancias concretas de
+                <classname>Zend_CodeGenerator_Php_Method</classname>. </para>
 
-             <programlisting language="php"><![CDATA[
+        <programlisting language="php"><![CDATA[
 
 $foo      = new Zend_CodeGenerator_Php_Class();
 $docblock = new Zend_CodeGenerator_Php_Docblock(array(
@@ -218,11 +209,9 @@ $foo->setName('Foo')
 echo $foo->generate();
 ]]></programlisting>
 
-        <para>
-            Lo anterior genera la siguiente salida:
-        </para>
+        <para> Lo anterior genera la siguiente salida: </para>
 
-             <programlisting language="php"><![CDATA[
+        <programlisting language="php"><![CDATA[
 
 /**
  * Sample generated class
@@ -274,21 +263,19 @@ class Foo
         <title>Generando archivos PHP</title>
 
         <para>
-            <classname>Zend_CodeGenerator_Php_File</classname> puede ser 
-            utilizada para generar el contenido de un archivo <acronym>PHP</acronym>. 
-            Usted puede incluir clases, así como el contenido arbitrario del 
-            cuerpo. Cuando acople clases, debe adjuntar instancias concretas de
-            <classname>Zend_CodeGenerator_Php_Class</classname> o un array 
-            definiendo la clase.
-        </para>
+            <classname>Zend_CodeGenerator_Php_File</classname> puede ser
+            utilizada para generar el contenido de un archivo
+                <acronym>PHP</acronym>. Usted puede incluir clases, así como el
+            contenido arbitrario del cuerpo. Cuando acople clases, debe adjuntar
+            instancias concretas de
+                <classname>Zend_CodeGenerator_Php_Class</classname> o un array
+            definiendo la clase. </para>
+
+        <para> En el ejemplo siguiente, asumiremos que ha definido
+                <varname>$foo</varname> como una de las definiciones de clase
+            del ejemplo anterior. </para>
 
-        <para>
-            En el ejemplo siguiente, asumiremos que ha definido 
-            <varname>$foo</varname> como una de las definiciones de clase del
-            ejemplo anterior.
-        </para>
-
-             <programlisting language="php"><![CDATA[
+        <programlisting language="php"><![CDATA[
 
 $file = new Zend_CodeGenerator_Php_File(array(
     'classes'  => array($foo);
@@ -305,23 +292,19 @@ $file = new Zend_CodeGenerator_Php_File(array(
 ));
 ]]></programlisting>
 
-        <para>
-            Llamando a <methodname>generate()</methodname> generará el código -- pero no lo 
-            grabará en un archivo. Usted mismo deberá capturar y grabar los 
-            contenidos en un archivo. Por ejemplo:
-        </para>
+        <para> Llamando a <methodname>generate()</methodname> generará el código
+            -- pero no lo grabará en un archivo. Usted mismo deberá capturar y
+            grabar los contenidos en un archivo. Por ejemplo: </para>
 
-         <programlisting language="php"><![CDATA[
+        <programlisting language="php"><![CDATA[
 
 $code = $file->generate();
 file_put_contents('Foo.php', $code);
 ]]></programlisting>
 
-        <para>
-            Lo anterior generará el siguiente archivo:
-        </para>
+        <para> Lo anterior generará el siguiente archivo: </para>
 
-         <programlisting language="php"><![CDATA[
+        <programlisting language="php"><![CDATA[
 
 <?php
 /**
@@ -381,14 +364,13 @@ define('APPLICATION_ENV', 'testing');
     </example>
 
     <example id="zend.codegenerator.examples.reflection-file">
-        <title>Sembrando la generación de código para un archivo PHP 
-        via reflection</title>
-       <para>
-            You can add <acronym>PHP</acronym> code to an existing <acronym>PHP</acronym> file
-            using the code generator. To do so, you need to first do reflection on it. The
-            static method <methodname>fromReflectedFileName()</methodname> allows you to do
-            this.
-        </para>
+        <title>Sembrando la generación de código para un archivo PHP via
+            reflection</title>
+        <para> You can add <acronym>PHP</acronym> code to an existing
+                <acronym>PHP</acronym> file using the code generator. To do so,
+            you need to first do reflection on it. The static method
+                <methodname>fromReflectedFileName()</methodname> allows you to
+            do this. </para>
 
         <programlisting language="php"><![CDATA[
 $generator = Zend_CodeGenerator_Php_File::fromReflectedFileName($path);
@@ -400,14 +382,12 @@ file_put_contents($path, $generator->generate());
 
     <example id="zend.codegenerator.examples.reflection-class">
         <title>Sembrando la generación de clases PHP via reflection</title>
-	 <para>
-            You may add code to an existing class. To do so, first use the
-            static <methodname>fromReflection()</methodname> method to map the class into a
-            generator object. From there, you may add additional properties or
-            methods, and then regenerate the class.
-        </para>
-		
-		<programlisting language="php"><![CDATA[
+        <para> You may add code to an existing class. To do so, first use the
+            static <methodname>fromReflection()</methodname> method to map the
+            class into a generator object. From there, you may add additional
+            properties or methods, and then regenerate the class. </para>
+
+        <programlisting language="php"><![CDATA[
 $generator = Zend_CodeGenerator_Php_Class::fromReflection(
     new Zend_Reflection_Class($class)
 );
@@ -437,11 +417,9 @@ $code = $generator->generate();
 
     <example id="zend.codegenerator.examples.reflection-method">
         <title>Sembrando la generación de métodos PHP via reflection</title>
-        <para>
-            You may add code to an existing class. To do so, first use the
-            static <methodname>fromReflection()</methodname> method to map the class into a
-            generator object. From there, you may add additional properties or
-            methods, and then regenerate the class.
-        </para>
+        <para> You may add code to an existing class. To do so, first use the
+            static <methodname>fromReflection()</methodname> method to map the
+            class into a generator object. From there, you may add additional
+            properties or methods, and then regenerate the class. </para>
     </example>
 </sect1>

+ 1 - 1
documentation/manual/es/module_specs/Zend_Config-TheoryOfOperation.xml

@@ -59,7 +59,7 @@
         ítemes en <methodname>$localConfig</methodname> sobrescribirán cualquier item con el mismo nombre en
             <methodname>$config</methodname>. <note>
             <para> El objeto <classname>Zend_Config</classname> que está ejecutando el merge debe haber sido construido
-                para permitir modificaciones, pasando <methodname>true</methodname> como el segundo parámetro del
+                para permitir modificaciones, pasando constant>TRUE</constant> como el segundo parámetro del
                 constructor. El método <methodname>setReadOnly()</methodname> puede entonces ser usado para evitar
                 cualquier modificación posterior después de que el merge se haya completado. </para>
         </note>

+ 26 - 30
documentation/manual/es/module_specs/Zend_Controller-ActionHelpers-ActionStack.xml

@@ -1,40 +1,40 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 15103 -->
+<!-- EN-Revision: 16003 -->
 <!-- Reviewed: no -->
 <sect3 id="zend.controller.actionhelpers.actionstack">
     <title>ActionStack</title>
 
-    <para>
-        El ayudante <emphasis>ActionStack</emphasis> le permite empujar requerimientos al
-        <link linkend="zend.controller.plugins.standard.actionstack">ActionStack</link>
-        plugin del front controller, el cual le ayuda efectivamente a crear
-        una cola de acciones a ejecutar durante la solicitud.
-        El ayudante le permite añadir acciones ya sea especificando nuevos
-        objetos solicitud o conjuntos acción/controlador/módulo.
-    </para>
+    <para> El helper <emphasis>ActionStack</emphasis> le permite empujar
+        requerimientos al <link
+            linkend="zend.controller.plugins.standard.actionstack"
+            >ActionStack</link> plugin del front controller, el cual le ayuda
+        efectivamente a crear una cola de acciones a ejecutar durante la
+        solicitud. El helper le permite añadir actions ya sea mediante la
+        especificación de los objetos o una 
+        nueva solicitud action - controller - module. </para>
 
     <note>
-        <title>Invocando al Ayudante ActionStack Inicializa el Plugin de ActionStack</title>
+        <title>Invocando al Ayudante ActionStack Inicializa el Plugin de
+            ActionStack</title>
 
-        <para>
-            Invocando al ayuudante <emphasis>ActionStack</emphasis> implicitamente
-            registra el plugin de <emphasis>ActionStack</emphasis> -- lo que significa
-            que no necesita registrar explícitamente el plugin de <emphasis>ActionStack</emphasis>
-            para utilizar esta funcionalidad.
-        </para>
+        <para> Invocando al helper <emphasis>ActionStack</emphasis>
+            implicitamente registra el plugin de
+                <emphasis>ActionStack</emphasis> -- lo que significa que no
+            necesita registrar explícitamente el plugin de
+                <emphasis>ActionStack</emphasis> para utilizar esta
+            funcionalidad. </para>
     </note>
 
     <example id="zend.controller.actionhelpers.actionstack.simple">
-        <title>Agregando una Tarea Usando Nombres de Acción, Controllador y Módulo</title>
+        <title>Agregando una Tarea Usando Nombres de Acción, Controllador y
+            Módulo</title>
 
-        <para>
-            A menudo, es más sencillo simplemente especificar la acción, el
+        <para> A menudo, es más sencillo simplemente especificar la acción, el
             controlador y el módulo (y parámetros opcionales de requerimientos),
             tal como cuando llama a
-            <methodname>Zend_Controller_Action::_forward()</methodname>:
-        </para>
+                <methodname>Zend_Controller_Action::_forward()</methodname>: </para>
 
-         <programlisting language="php"><![CDATA[
+        <programlisting language="php"><![CDATA[
 class FooController extends Zend_Controller_Action
 {
     public function barAction()
@@ -59,12 +59,11 @@ class FooController extends Zend_Controller_Action
     <example id="zend.controller.actionhelpers.actionstack.simple2">
         <title>Agregando una Tarea al Objeto Solicitud (Request)</title>
 
-        <para>
-            A veces la naturaleza <acronym>OOP</acronym> de un objeto solicitud tiene más sentido;
-            puede pasar también tal objeto al ayudante <emphasis>ActionStack</emphasis>.
-        </para>
+        <para> A veces la naturaleza <acronym>OOP</acronym> de un objeto
+            solicitud tiene más sentido; puede pasar también tal objeto al
+            ayudante <emphasis>ActionStack</emphasis>. </para>
 
-         <programlisting language="php"><![CDATA[
+        <programlisting language="php"><![CDATA[
 class FooController extends Zend_Controller_Action
 {
     public function barAction()
@@ -90,6 +89,3 @@ class FooController extends Zend_Controller_Action
 ]]></programlisting>
     </example>
 </sect3>
-<!--
-vim:se ts=4 sw=4 et:
--->

Разница между файлами не показана из-за своего большого размера
+ 384 - 398
documentation/manual/es/module_specs/Zend_Controller-ActionHelpers-ContextSwitch.xml


+ 2 - 2
documentation/manual/es/module_specs/Zend_Controller-ActionHelpers-Json.xml

@@ -79,7 +79,7 @@ class FooController extends Zend_Controller_Action
             quizás para envolver la respuesta de JSON en algún tipo de
             contexto -- cada método en el ayudante JSON acepta un segundo
             argumento opcional: un flag para activar o desactivar layouts.
-            Pasando un valor booleano <methodname>true</methodname> conservará los layouts
+            Pasando un valor booleano constant>TRUE</constant> conservará los layouts
             habilitados:
         </para>
 
@@ -106,7 +106,7 @@ $this->_helper->json($data, array('keepLayouts' => true);
             de expresiones nativas de JSON utilizando objetos
             <methodname>Zend_Json_Expr</methodname>. Esta opción está desactivada por
             defecto. Para activar esta opción, pase un valor booleano
-            <methodname>true</methodname> a la opción <methodname>enableJsonExprFinder</methodname>:
+            constant>TRUE</constant> a la opción <methodname>enableJsonExprFinder</methodname>:
         </para>
 
          <programlisting language="php"><![CDATA[

+ 2 - 2
documentation/manual/es/module_specs/Zend_Controller-FrontController.xml

@@ -420,8 +420,8 @@ Zend_Controller_Front::run('../application/controllers');
                 <para>
                     <methodname>returnResponse($flag)</methodname> se usa para decirle al 
                     front controller cuando regresar la respuesta 
-                    (<methodname>true</methodname>) desde <methodname>dispatch()</methodname>, o si la 
-                    respuesta debe ser emitida automáticamente (<methodname>false</methodname>).
+                    (constant>TRUE</constant>) desde <methodname>dispatch()</methodname>, o si la 
+                    respuesta debe ser emitida automáticamente (constant>FALSE</constant>).
                     Por defecto, la respuesta es automáticamente emitida 
                     (llamando a                  
                     <classname>Zend_Controller_Response_Abstract::sendResponse()</classname>);

Разница между файлами не показана из-за своего большого размера
+ 205 - 165
documentation/manual/es/module_specs/Zend_Db_Adapter.xml


+ 1 - 1
documentation/manual/es/module_specs/Zend_Db_Profiler.xml

@@ -50,7 +50,7 @@ $db->getProfiler()->setEnabled(true);
 
         <para>
             Un argumento booleano establece el perfilador como habilitado si el valor es
-            <methodname>true</methodname>, o deshabilitado si es <methodname>false</methodname>. La clase del perfilador
+            constant>TRUE</constant>, o deshabilitado si es constant>FALSE</constant>. La clase del perfilador
             es el la clase de perfilador por defecto del adaptador, <classname>Zend_Db_Profiler</classname>.
              <programlisting language="php"><![CDATA[
 $params['profiler'] = true;

+ 2 - 2
documentation/manual/es/module_specs/Zend_Db_Statement.xml

@@ -194,7 +194,7 @@ $stmt->execute(array(':reporter' => 'goofy', ':status' => 'FIXED'));
             </itemizedlist>
 
             <para>
-                <methodname>fetch()</methodname> devuelve <methodname>false</methodname> si todas las filas
+                <methodname>fetch()</methodname> devuelve constant>FALSE</constant> si todas las filas
                 del conjunto de resultados han sido extraídas.
             </para>
 
@@ -297,7 +297,7 @@ echo $rows[0][0];
                 conjunto de resultados, use <methodname>fetchColumn()</methodname>. El
                 parámetro opcional es el índice de la columna (integer), y por
                 defecto es 0. Este método devuelve un valor escalar, o
-                <methodname>false</methodname> si todas las filas del conjunto de resultados
+                constant>FALSE</constant> si todas las filas del conjunto de resultados
                 han sido extraídas.
             </para>
 

+ 0 - 1727
documentation/manual/es/module_specs/Zend_Db_Table.xml

@@ -1,1727 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 15103 -->
-<!-- Reviewed: no -->
-<sect1 id="zend.db.table">
-
-    <title>Zend_Db_Table</title>
-
-    <sect2 id="zend.db.table.introduction">
-
-        <title>Introduction</title>
-
-        <para>
-            The <classname>Zend_Db_Table</classname> class is an object-oriented interface to database tables. It provides
-            methods for many common operations on tables. The base class is extensible, so you can
-            add custom logic.
-        </para>
-
-        <para>
-            The <classname>Zend_Db_Table</classname> solution is an implementation of the
-            <ulink url="http://www.martinfowler.com/eaaCatalog/tableDataGateway.html">Table Data
-            Gateway</ulink> pattern. The solution also includes a class that implements the
-            <ulink url="http://www.martinfowler.com/eaaCatalog/rowDataGateway.html">Row Data
-            Gateway</ulink> pattern.
-        </para>
-
-    </sect2>
-
-    <sect2 id="zend.db.table.defining">
-
-        <title>Defining a Table Class</title>
-
-        <para>
-            For each table in your database that you want to access, define a class that extends
-            <classname>Zend_Db_Table_Abstract</classname>.
-        </para>
-
-        <sect3 id="zend.db.table.defining.table-schema">
-
-            <title>Defining the Table Name and Schema</title>
-
-            <para>
-                Declare the database table for which this class is defined, using the protected
-                variable <methodname>$_name</methodname>. This is a string, and must contain the name of the
-                table spelled as it appears in the database.
-            </para>
-
-            <example id="zend.db.table.defining.table-schema.example1">
-
-                <title>Declaring a table class with explicit table name</title>
-
-                 <programlisting language="php"><![CDATA[
-class Bugs extends Zend_Db_Table_Abstract
-{
-    protected $_name = 'bugs';
-}
-]]></programlisting>
-
-            </example>
-
-            <para>
-                If you don't specify the table name, it defaults to the name of the class. If you
-                rely on this default, the class name must match the spelling of the table name as
-                it appears in the database.
-            </para>
-
-            <example id="zend.db.table.defining.table-schema.example">
-
-                <title>Declaring a table class with implicit table name</title>
-
-                 <programlisting language="php"><![CDATA[
-class bugs extends Zend_Db_Table_Abstract
-{
-    // table name matches class name
-}
-]]></programlisting>
-
-            </example>
-
-            <para>
-                You can also declare the schema for the table, either with the protected variable
-                <methodname>$_schema</methodname>, or with the schema prepended to the table name in the
-                <methodname>$_name</methodname> property. Any schema specified with the <methodname>$_name</methodname>
-                property takes precedence over a schema specified with the <methodname>$_schema</methodname>
-                property. In some RDBMS brands, the term for schema is "database" or "tablespace,"
-                but it is used similarly.
-            </para>
-
-            <example id="zend.db.table.defining.table-schema.example3">
-
-                <title>Declaring a table class with schema</title>
-
-                 <programlisting language="php"><![CDATA[
-// First alternative:
-class Bugs extends Zend_Db_Table_Abstract
-{
-    protected $_schema = 'bug_db';
-    protected $_name   = 'bugs';
-}
-
-// Second alternative:
-class Bugs extends Zend_Db_Table_Abstract
-{
-    protected $_name = 'bug_db.bugs';
-}
-
-// If schemas are specified in both $_name and $_schema, the one
-// specified in $_name takes precedence:
-
-class Bugs extends Zend_Db_Table_Abstract
-{
-    protected $_name   = 'bug_db.bugs';
-    protected $_schema = 'ignored';
-}
-]]></programlisting>
-
-            </example>
-
-            <para>
-                The schema and table names may also be specified via constructor configuration
-                directives, which override any default values specified with the
-                <methodname>$_name</methodname> and <methodname>$_schema</methodname> properties. A schema specification
-                given with the <methodname>name</methodname> directive overrides any value provided with the
-                <methodname>schema</methodname> option.
-            </para>
-
-            <example id="zend.db.table.defining.table-schema.example.constructor">
-
-                <title>Declaring table and schema names upon instantiation</title>
-
-                 <programlisting language="php"><![CDATA[
-class Bugs extends Zend_Db_Table_Abstract
-{
-}
-
-// First alternative:
-
-$tableBugs = new Bugs(array('name' => 'bugs', 'schema' => 'bug_db'));
-
-// Second alternative:
-
-$tableBugs = new Bugs(array('name' => 'bug_db.bugs'));
-
-// If schemas are specified in both 'name' and 'schema', the one
-// specified in 'name' takes precedence:
-
-$tableBugs = new Bugs(array('name' => 'bug_db.bugs',
-                            'schema' => 'ignored'));
-]]></programlisting>
-
-            </example>
-
-            <para>
-                If you don't specify the schema name, it defaults to the schema to which your
-                database adapter instance is connected.
-            </para>
-
-        </sect3>
-
-        <sect3 id="zend.db.table.defining.primary-key">
-
-            <title>Defining the Table Primary Key</title>
-
-            <para>
-                Every table must have a primary key. You can declare the column for the primary key
-                using the protected variable <methodname>$_primary</methodname>. This is either a string that
-                names the single column for the primary key, or else it is an array of column names
-                if your primary key is a compound key.
-            </para>
-
-            <example id="zend.db.table.defining.primary-key.example">
-
-                <title>Example of specifying the primary key</title>
-
-                 <programlisting language="php"><![CDATA[
-class Bugs extends Zend_Db_Table_Abstract
-{
-    protected $_name = 'bugs';
-    protected $_primary = 'bug_id';
-}
-]]></programlisting>
-
-            </example>
-
-            <para>
-                If you don't specify the primary key, <classname>Zend_Db_Table_Abstract</classname> tries to discover the
-                primary key based on the information provided by the <methodname>describeTable()</methodname>´
-                method.
-            </para>
-
-            <note>
-
-                <para>
-                    Every table class must know which column(s) can be used to address rows
-                    uniquely. If no primary key column(s) are specified in the table class
-                    definition or the table constructor arguments, or discovered in the table
-                    metadata provided by <methodname>describeTable()</methodname>, then the table cannot be
-                    used with <classname>Zend_Db_Table</classname>.
-                </para>
-
-            </note>
-
-        </sect3>
-
-        <sect3 id="zend.db.table.defining.setup">
-
-            <title>Overriding Table Setup Methods</title>
-
-            <para>
-                When you create an instance of a Table class, the constructor calls a set of
-                protected methods that initialize metadata for the table. You can extend any of
-                these methods to define metadata explicitly. Remember to call the method of the
-                same name in the parent class at the end of your method.
-            </para>
-
-            <example id="zend.db.table.defining.setup.example">
-
-                <title>Example of overriding the _setupTableName() method</title>
-
-                 <programlisting language="php"><![CDATA[
-class Bugs extends Zend_Db_Table_Abstract
-{
-    protected function _setupTableName()
-    {
-        $this->_name = 'bugs';
-        parent::_setupTableName();
-    }
-}
-]]></programlisting>
-
-            </example>
-
-            <para>
-                The setup methods you can override are the following:
-            </para>
-
-            <itemizedlist>
-                <listitem>
-                    <para>
-                        <methodname>_setupDatabaseAdapter()</methodname> checks that an adapter has been
-                        provided; gets a default adapter from the registry if needed. By overriding
-                        this method, you can set a database adapter from some other source.
-                    </para>
-                </listitem>
-
-                <listitem>
-                    <para>
-                        <methodname>_setupTableName()</methodname> defaults the table name to the name of the
-                        class. By overriding this method, you can set the table name before this
-                        default behavior runs.
-                    </para>
-                </listitem>
-
-                <listitem>
-                    <para>
-                        <methodname>_setupMetadata()</methodname> sets the schema if the table name contains
-                        the pattern "schema.table"; calls <methodname>describeTable()</methodname> to get
-                        metadata information; defaults the <methodname>$_cols</methodname> array to the columns
-                        reported by <methodname>describeTable()</methodname>. By overriding this method, you
-                        can specify the columns.
-                    </para>
-                </listitem>
-
-                <listitem>
-                    <para>
-                        <methodname>_setupPrimaryKey()</methodname> defaults the primary key columns to those
-                        reported by <methodname>describeTable()</methodname>; checks that the primary key
-                        columns are included in the <methodname>$_cols</methodname> array. By overriding this
-                        method, you can specify the primary key columns.
-                    </para>
-                </listitem>
-            </itemizedlist>
-
-        </sect3>
-
-        <sect3 id="zend.db.table.initialization">
-
-            <title>Table initialization</title>
-
-            <para>
-                If application-specific logic needs to be initialized when a Table class is
-                constructed, you can select to move your tasks to the <methodname>init()</methodname> method,
-                which is called after all Table metadata has been processed. This is recommended
-                over the <methodname>__construct</methodname> method if you do not need to alter the metadata
-                in any programmatic way.
-            </para>
-
-            <example id="zend.db.table.defining.init.usage.example">
-
-                <title>Example usage of init() method</title>
-
-                 <programlisting language="php"><![CDATA[
-class Bugs extends Zend_Db_Table_Abstract
-{
-    protected $_observer;
-
-    public function init()
-    {
-        $this->_observer = new MyObserverClass();
-    }
-}
-]]></programlisting>
-
-            </example>
-
-        </sect3>
-
-    </sect2>
-
-    <sect2 id="zend.db.table.constructing">
-
-        <title>Creating an Instance of a Table</title>
-
-        <para>
-            Before you use a Table class, create an instance using its constructor. The
-            constructor's argument is an array of options. The most important option to a Table
-            constructor is the database adapter instance, representing a live connection to an
-            RDBMS. There are three ways of specifying the database adapter to a Table class, and
-            these three ways are described below:
-        </para>
-
-        <sect3 id="zend.db.table.constructing.adapter">
-
-            <title>Specifying a Database Adapter</title>
-
-            <para>
-                The first way to provide a database adapter to a Table class is by passing it as an
-                object of type <classname>Zend_Db_Adapter_Abstract</classname> in the options array, identified by the key
-                <methodname>'db'</methodname>.
-            </para>
-
-            <example id="zend.db.table.constructing.adapter.example">
-
-                <title>Example of constructing a Table using an Adapter object</title>
-
-                 <programlisting language="php"><![CDATA[
-$db = Zend_Db::factory('PDO_MYSQL', $options);
-
-$table = new Bugs(array('db' => $db));
-]]></programlisting>
-
-            </example>
-
-        </sect3>
-
-        <sect3 id="zend.db.table.constructing.default-adapter">
-
-            <title>Setting a Default Database Adapter</title>
-
-            <para>
-                The second way to provide a database adapter to a Table class is by declaring an
-                object of type <classname>Zend_Db_Adapter_Abstract</classname> to be a default database adapter for all
-                subsequent instances of Tables in your application. You can do this with the static
-                method <classname>Zend_Db_Table_Abstract::setDefaultAdapter()</classname>. The argument is an
-                object of type <classname>Zend_Db_Adapter_Abstract</classname>.
-            </para>
-
-            <example id="zend.db.table.constructing.default-adapter.example">
-
-                <title>Example of constructing a Table using a the Default Adapter</title>
-
-                 <programlisting language="php"><![CDATA[
-$db = Zend_Db::factory('PDO_MYSQL', $options);
-Zend_Db_Table_Abstract::setDefaultAdapter($db);
-
-// Later...
-
-$table = new Bugs();
-]]></programlisting>
-
-            </example>
-
-            <para>
-                It can be convenient to create the database adapter object in a central place of
-                your application, such as the bootstrap, and then store it as the default adapter.
-                This gives you a means to ensure that the adapter instance is the same throughout
-                your application. However, setting a default adapter is limited to a single adapter
-                instance.
-            </para>
-
-        </sect3>
-
-        <sect3 id="zend.db.table.constructing.registry">
-
-            <title>Storing a Database Adapter in the Registry</title>
-
-            <para>
-                The third way to provide a database adapter to a Table class is by passing a string
-                in the options array, also identified by the <methodname>'db'</methodname> key. The string is
-                used as a key to the static <classname>Zend_Registry</classname> instance, where the entry at that key is
-                an object of type <classname>Zend_Db_Adapter_Abstract</classname>.
-            </para>
-
-            <example id="zend.db.table.constructing.registry.example">
-
-                <title>Example of constructing a Table using a Registry key</title>
-
-                 <programlisting language="php"><![CDATA[
-$db = Zend_Db::factory('PDO_MYSQL', $options);
-Zend_Registry::set('my_db', $db);
-
-// Later...
-
-$table = new Bugs(array('db' => 'my_db'));
-]]></programlisting>
-
-            </example>
-
-            <para>
-                Like setting the default adapter, this gives you the means to ensure that the same
-                adapter instance is used throughout your application. Using the registry is more
-                flexible, because you can store more than one adapter instance. A given adapter
-                instance is specific to a certain RDBMS brand and database instance. If your
-                application needs access to multiple databases or even multiple database brands,
-                then you need to use multiple adapters.
-            </para>
-
-        </sect3>
-
-    </sect2>
-
-    <sect2 id="zend.db.table.insert">
-
-        <title>Inserting Rows to a Table</title>
-
-        <para>
-            You can use the Table object to insert rows into the database table on which the Table
-            object is based. Use the <methodname>insert()</methodname> method of your Table object. The
-            argument is an associative array, mapping column names to values.
-        </para>
-
-        <example id="zend.db.table.insert.example">
-
-            <title>Example of inserting to a Table</title>
-
-             <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$data = array(
-    'created_on'      => '2007-03-22',
-    'bug_description' => 'Something wrong',
-    'bug_status'      => 'NEW'
-);
-
-$table->insert($data);
-]]></programlisting>
-
-        </example>
-
-        <para>
-            By default, the values in your data array are inserted as literal values, using
-            parameters. If you need them to be treated as SQL expressions, you must make sure they
-            are distinct from plain strings. Use an object of type <classname>Zend_Db_Expr</classname> to do this.
-        </para>
-
-        <example id="zend.db.table.insert.example-expr">
-
-            <title>Example of inserting expressions to a Table</title>
-
-             <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$data = array(
-    'created_on'      => new Zend_Db_Expr('CURDATE()'),
-    'bug_description' => 'Something wrong',
-    'bug_status'      => 'NEW'
-);
-]]></programlisting>
-
-        </example>
-
-        <para>
-            In the examples of inserting rows above, it is assumed that the table has an
-            auto-incrementing primary key. This is the default behavior of <classname>Zend_Db_Table_Abstract</classname>,
-            but there are other types of primary keys as well. The following sections describe how
-            to support different types of primary keys.
-        </para>
-
-        <sect3 id="zend.db.table.insert.key-auto">
-
-            <title>Using a Table with an Auto-incrementing Key</title>
-
-            <para>
-                An auto-incrementing primary key generates a unique integer value for you if you
-                omit the primary key column from your SQL <methodname>INSERT</methodname> statement.
-            </para>
-
-            <para>
-                In <classname>Zend_Db_Table_Abstract</classname>, if you define the protected variable
-                <methodname>$_sequence</methodname> to be the Boolean value <methodname>true</methodname>, then the class
-                assumes that the table has an auto-incrementing primary key.
-            </para>
-
-            <example id="zend.db.table.insert.key-auto.example">
-
-                <title>Example of declaring a Table with auto-incrementing primary key</title>
-
-                 <programlisting language="php"><![CDATA[
-class Bugs extends Zend_Db_Table_Abstract
-{
-    protected $_name = 'bugs';
-
-    // This is the default in the Zend_Db_Table_Abstract class;
-    // you do not need to define this.
-    protected $_sequence = true;
-}
-]]></programlisting>
-
-            </example>
-
-            <para>
-                MySQL, Microsoft SQL Server, and SQLite are examples of RDBMS brands that support
-                auto-incrementing primary keys.
-            </para>
-
-            <para>
-                PostgreSQL has a <methodname>SERIAL</methodname> notation that implicitly defines a sequence
-                based on the table and column name, and uses the sequence to generate key values
-                for new rows. IBM DB2 has an <methodname>IDENTITY</methodname> notation that works similarly.
-                If you use either of these notations, treat your <classname>Zend_Db_Table</classname> class as having an
-                auto-incrementing column with respect to declaring the <methodname>$_sequence</methodname>
-                member as <methodname>true</methodname>.
-            </para>
-
-        </sect3>
-
-        <sect3 id="zend.db.table.insert.key-sequence">
-
-            <title>Using a Table with a Sequence</title>
-
-            <para>
-                A sequence is a database object that generates a unique value, which can be used
-                as a primary key value in one or more tables of the database.
-            </para>
-
-            <para>
-                If you define <methodname>$_sequence</methodname> to be a string, then <classname>Zend_Db_Table_Abstract</classname>
-                assumes the string to name a sequence object in the database. The sequence is
-                invoked to generate a new value, and this value is used in the <methodname>INSERT</methodname>
-                operation.
-            </para>
-
-            <example id="zend.db.table.insert.key-sequence.example">
-
-                <title>Example of declaring a Table with a sequence</title>
-
-                 <programlisting language="php"><![CDATA[
-class Bugs extends Zend_Db_Table_Abstract
-{
-    protected $_name = 'bugs';
-
-    protected $_sequence = 'bug_sequence';
-}
-]]></programlisting>
-
-            </example>
-
-            <para>
-                Oracle, PostgreSQL, and IBM DB2 are examples of RDBMS brands that support sequence
-                objects in the database.
-            </para>
-
-            <para>
-                PostgreSQL and IBM DB2 also have syntax that defines sequences implicitly and
-                associated with columns. If you use this notation, treat the table as having an
-                auto-incrementing key column. Define the sequence name as a string only in cases
-                where you would invoke the sequence explicitly to get the next key value.
-            </para>
-
-        </sect3>
-
-        <sect3 id="zend.db.table.insert.key-natural">
-
-            <title>Using a Table with a Natural Key</title>
-
-            <para>
-                Some tables have a natural key. This means that the key is not automatically
-                generated by the table or by a sequence. You must specify the value for the primary
-                key in this case.
-            </para>
-
-            <para>
-                If you define the <methodname>$_sequence</methodname> to be the Boolean value
-                <methodname>false</methodname>, then <classname>Zend_Db_Table_Abstract</classname> assumes that the table has a
-                natural primary key. You must provide values for the primary key columns in the
-                array of data to the <methodname>insert()</methodname> method, or else this method throws a
-                <classname>Zend_Db_Table_Exception</classname>.
-            </para>
-
-            <example id="zend.db.table.insert.key-natural.example">
-
-                <title>Example of declaring a Table with a natural key</title>
-
-                 <programlisting language="php"><![CDATA[
-class BugStatus extends Zend_Db_Table_Abstract
-{
-    protected $_name = 'bug_status';
-
-    protected $_sequence = false;
-}
-]]></programlisting>
-
-            </example>
-
-            <note>
-
-                <para>
-                    All RDBMS brands support tables with natural keys. Examples of tables that are
-                    often declared as having natural keys are lookup tables, intersection tables in
-                    many-to-many relationships, or most tables with compound primary keys.
-                </para>
-
-            </note>
-
-        </sect3>
-
-    </sect2>
-
-    <sect2 id="zend.db.table.update">
-
-        <title>Updating Rows in a Table</title>
-
-        <para>
-            You can update rows in a database table using the <methodname>update</methodname> method of a Table
-            class. This method takes two arguments: an associative array of columns to change and
-            new values to assign to these columns; and an SQL expression that is used in a
-            <methodname>WHERE</methodname> clause, as criteria for the rows to change in the
-            <methodname>UPDATE</methodname> operation.
-        </para>
-
-        <example id="zend.db.table.update.example">
-
-            <title>Example of updating rows in a Table</title>
-
-             <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$data = array(
-    'updated_on'      => '2007-03-23',
-    'bug_status'      => 'FIXED'
-);
-
-$where = $table->getAdapter()->quoteInto('bug_id = ?', 1234);
-
-$table->update($data, $where);
-]]></programlisting>
-
-        </example>
-
-        <para>
-            Since the table <methodname>update()</methodname> method proxies to the database adapter
-            <link linkend="zend.db.adapter.write.update"><methodname>update()</methodname></link> method, the
-            second argument can be an array of SQL expressions. The expressions are combined as
-            Boolean terms using an <methodname>AND</methodname> operator.
-        </para>
-
-        <note>
-
-            <para>
-                The values and identifiers in the SQL expression are not quoted for you. If you
-                have values or identifiers that require quoting, you are responsible for doing
-                this. Use the <methodname>quote()</methodname>, <methodname>quoteInto()</methodname>, and
-                <methodname>quoteIdentifier()</methodname> methods of the database adapter.
-            </para>
-
-        </note>
-
-    </sect2>
-
-    <sect2 id="zend.db.table.delete">
-
-        <title>Deleting Rows from a Table</title>
-
-        <para>
-            You can delete rows from a database table using the <methodname>delete()</methodname> method. This
-            method takes one argument, which is an SQL expression that is used in a
-            <methodname>WHERE</methodname> clause, as criteria for the rows to delete.
-        </para>
-
-        <example id="zend.db.table.delete.example">
-
-            <title>Example of deleting rows from a Table</title>
-
-             <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$where = $table->getAdapter()->quoteInto('bug_id = ?', 1235);
-
-$table->delete($where);
-]]></programlisting>
-
-        </example>
-
-        <para>
-            Since the table <methodname>delete()</methodname> method proxies to the database adapter
-            <link linkend="zend.db.adapter.write.delete"><methodname>delete()</methodname></link> method, the
-            argument can also be an array of SQL expressions. The expressions are combined as
-            Boolean terms using an <methodname>AND</methodname> operator.
-        </para>
-
-        <note>
-
-            <para>
-                The values and identifiers in the SQL expression are not quoted for you. If you
-                have values or identifiers that require quoting, you are responsible for doing
-                this. Use the <methodname>quote()</methodname>, <methodname>quoteInto()</methodname>, and
-                <methodname>quoteIdentifier()</methodname> methods of the database adapter.
-            </para>
-
-        </note>
-
-    </sect2>
-
-    <sect2 id="zend.db.table.find">
-
-        <title>Finding Rows by Primary Key</title>
-
-        <para>
-            You can query the database table for rows matching specific values in the primary key,
-            using the <methodname>find()</methodname> method. The first argument of this method is either a
-            single value or an array of values to match against the primary key of the table.
-        </para>
-
-        <example id="zend.db.table.find.example">
-
-            <title>Example of finding rows by primary key values</title>
-
-             <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-// Find a single row
-// Returns a Rowset
-$rows = $table->find(1234);
-
-// Find multiple rows
-// Also returns a Rowset
-$rows = $table->find(array(1234, 5678));
-]]></programlisting>
-
-        </example>
-
-        <para>
-            If you specify a single value, the method returns at most one row, because a primary
-            key cannot have duplicate values and there is at most one row in the database table
-            matching the value you specify. If you specify multiple values in an array, the method
-            returns at most as many rows as the number of distinct values you specify.
-        </para>
-
-        <para>
-            The <methodname>find()</methodname> method might return fewer rows than the number of values you
-            specify for the primary key, if some of the values don't match any rows in the database
-            table. The method even may return zero rows. Because the number of rows returned is
-            variable, the <methodname>find()</methodname> method returns an object of type
-            <classname>Zend_Db_Table_Rowset_Abstract</classname>.
-        </para>
-
-        <para>
-            If the primary key is a compound key, that is, it consists of multiple columns, you can
-            specify the additional columns as additional arguments to the <methodname>find()</methodname>
-            method. You must provide as many arguments as the number of columns in the table's
-            primary key.
-        </para>
-
-        <para>
-            To find multiple rows from a table with a compound primary key, provide an array for
-            each of the arguments. All of these arrays must have the same number of elements. The
-            values in each array are formed into tuples in order; for example, the first element
-            in all the array arguments define the first compound primary key value, then the second
-            elements of all the arrays define the second compound primary key value, and so on.
-        </para>
-
-        <example id="zend.db.table.find.example-compound">
-
-            <title>Example of finding rows by compound primary key values</title>
-
-            <para>
-                The call to <methodname>find()</methodname> below to match multiple rows can match two rows in
-                the database. The first row must have primary key value (1234, 'ABC'), and the
-                second row must have primary key value (5678, 'DEF').
-            </para>
-
-             <programlisting language="php"><![CDATA[
-class BugsProducts extends Zend_Db_Table_Abstract
-{
-    protected $_name = 'bugs_products';
-    protected $_primary = array('bug_id', 'product_id');
-}
-
-$table = new BugsProducts();
-
-// Find a single row with a compound primary key
-// Returns a Rowset
-$rows = $table->find(1234, 'ABC');
-
-// Find multiple rows with compound primary keys
-// Also returns a Rowset
-$rows = $table->find(array(1234, 5678), array('ABC', 'DEF'));
-]]></programlisting>
-
-        </example>
-
-    </sect2>
-
-    <sect2 id="zend.db.table.fetch-all">
-
-        <title>Querying for a Set of Rows</title>
-
-        <sect3 id="zend.db.table.fetch-all.select">
-
-            <title>Select API</title>
-
-            <para>
-
-                <warning>
-
-                    <para>
-                        The <acronym>API</acronym> for fetch operations has been superseded to allow a
-                        <classname>Zend_Db_Table_Select</classname> object to modify the query. However, the
-                        deprecated usage of the <methodname>fetchRow()</methodname> and <methodname>fetchAll()</methodname>
-                        methods will continue to work without modification.
-                    </para>
-
-                    <para>
-                        The following statements are all legal and functionally identical, however
-                        it is recommended to update your code to take advantage of the new usage
-                        where possible.
-                    </para>
-
-                    <para>
-
-                         <programlisting language="php"><![CDATA[
-// Fetching a rowset
-$rows = $table->fetchAll('bug_status = "NEW"', 'bug_id ASC', 10, 0);
-$rows = $table->fetchAll($table->select()->where('bug_status = ?', 'NEW')
-                                         ->order('bug_id ASC')
-                                         ->limit(10, 0));
-
-// Fetching a single row
-$row = $table->fetchRow('bug_status = "NEW"', 'bug_id ASC');
-$row = $table->fetchRow($table->select()->where('bug_status = ?', 'NEW')
-                                        ->order('bug_id ASC'));
-]]></programlisting>
-
-                    </para>
-
-                </warning>
-
-            </para>
-
-            <para>
-                The <classname>Zend_Db_Table_Select</classname> object is an extension of the
-                <classname>Zend_Db_Select</classname> object that applies specific restrictions to
-                a query. The enhancements and restrictions are:
-            </para>
-
-            <itemizedlist>
-                <listitem>
-                    <para>
-                        You <emphasis>can</emphasis> elect to return a subset of columns within a
-                        fetchRow or fetchAll query. This can provide optimization benefits where
-                        returning a large set of results for all columns is not desirable.
-                    </para>
-                </listitem>
-
-                <listitem>
-                    <para>
-                        You <emphasis>can</emphasis> specify columns that evaluate expressions from
-                        within the selected table. However this will mean that the returned row or
-                        rowset will be <property>readOnly</property> and cannot be used for save()
-                        operations. A <classname>Zend_Db_Table_Row</classname> with
-                        <property>readOnly</property> status will throw an exception if a
-                        <methodname>save()</methodname> operation is attempted.
-                    </para>
-                </listitem>
-
-                <listitem>
-                    <para>
-                        You <emphasis>can</emphasis> allow JOIN clauses on a select to allow
-                        multi-table lookups.
-                    </para>
-                </listitem>
-
-                <listitem>
-                    <para>
-                        You <emphasis>can not</emphasis> specify columns from a JOINed tabled to be
-                        returned in a row/rowset. Doing so will trigger a <acronym>PHP</acronym> error. This was done
-                        to ensure the integrity of the <classname>Zend_Db_Table</classname> is retained. i.e.
-                        A <classname>Zend_Db_Table_Row</classname> should only reference columns derived from
-                        its parent table.
-                    </para>
-                </listitem>
-            </itemizedlist>
-
-            <para>
-
-                <example id="zend.db.table.qry.rows.set.simple.usage.example">
-
-                    <title>Simple usage</title>
-
-                     <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$select = $table->select();
-$select->where('bug_status = ?', 'NEW');
-
-$rows = $table->fetchAll($select);
-]]></programlisting>
-
-                </example>
-
-            </para>
-
-            <para>
-                Fluent interfaces are implemented across the component, so this can be rewritten
-                this in a more abbreviated form.
-            </para>
-
-            <para>
-
-                <example id="zend.db.table.qry.rows.set.fluent.interface.example">
-
-                    <title>Example of fluent interface</title>
-
-                     <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$rows =
-    $table->fetchAll($table->select()->where('bug_status = ?', 'NEW'));
-]]></programlisting>
-
-                </example>
-
-            </para>
-
-        </sect3>
-
-        <sect3 id="zend.db.table.fetch-all.usage">
-
-            <title>Fetching a rowset</title>
-
-            <para>
-                You can query for a set of rows using any criteria other than the primary key
-                values, using the <methodname>fetchAll()</methodname> method of the Table class. This method
-                returns an object of type <classname>Zend_Db_Table_Rowset_Abstract</classname>.
-            </para>
-
-            <example id="zend.db.table.qry.rows.set.finding.row.example">
-
-                <title>Example of finding rows by an expression</title>
-
-                 <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$select = $table->select()->where('bug_status = ?', 'NEW');
-
-$rows = $table->fetchAll($select);
-]]></programlisting>
-
-            </example>
-
-            <para>
-                You may also pass sorting criteria in an <methodname>ORDER BY</methodname> clause, as well as
-                count and offset integer values, used to make the query return a specific subset of
-                rows. These values are used in a <methodname>LIMIT</methodname> clause, or in equivalent logic
-                for RDBMS brands that do not support the <methodname>LIMIT</methodname> syntax.
-            </para>
-
-            <example id="zend.db.table.fetch-all.example2">
-
-                <title>Example of finding rows by an expression</title>
-
-                 <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$order  = 'bug_id';
-
-// Return the 21st through 30th rows
-$count  = 10;
-$offset = 20;
-
-$select = $table->select()->where(array('bug_status = ?' => 'NEW'))
-                          ->order($order)
-                          ->limit($count, $offset);
-
-$rows = $table->fetchAll($select);
-]]></programlisting>
-
-            </example>
-
-            <para>
-                All of the arguments above are optional. If you omit the ORDER clause, the result
-                set includes rows from the table in an unpredictable order. If no LIMIT clause is
-                set, you retrieve every row in the table that matches the WHERE clause.
-            </para>
-
-        </sect3>
-
-        <sect3 id="zend.db.table.advanced.usage">
-
-            <title>Advanced usage</title>
-
-            <para>
-                For more specific and optimized requests, you may wish to limit the number of
-                columns returned in a row/rowset. This can be achieved by passing a FROM clause to
-                the select object. The first argument in the FROM clause is identical to that of a
-                <classname>Zend_Db_Select</classname> object with the addition of being able to pass an instance of
-                <classname>Zend_Db_Table_Abstract</classname> and have it automatically determine the table name.
-            </para>
-
-            <para>
-
-                <example id="zend.db.table.qry.rows.set.retrieving.a.example">
-
-                    <title>Retrieving specific columns</title>
-
-                     <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$select = $table->select();
-$select->from($table, array('bug_id', 'bug_description'))
-       ->where('bug_status = ?', 'NEW');
-
-$rows = $table->fetchAll($select);
-]]></programlisting>
-
-                </example>
-
-            </para>
-
-            <para>
-
-                <important>
-
-                    <para>
-                        The rowset contains rows that are still 'valid' - they simply contain a
-                        subset of the columns of a table. If a save() method is called on a partial
-                        row then only the fields available will be modified.
-                    </para>
-
-                </important>
-
-                You can also specify expressions within a FROM clause and have these returned as a
-                readOnly row/rowset. In this example we will return a rows from the bugs table that
-                show an aggregate of the number of new bugs reported by individuals. Note the GROUP
-                clause. The 'count' column will be made available to the row for evaluation and can
-                be accessed as if it were part of the schema.
-            </para>
-
-            <para>
-
-                <example id="zend.db.table.qry.rows.set.retrieving.b.example">
-
-                    <title>Retrieving expressions as columns</title>
-
-                     <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$select = $table->select();
-$select->from($table,
-              array('COUNT(reported_by) as `count`', 'reported_by'))
-       ->where('bug_status = ?', 'NEW')
-       ->group('reported_by');
-
-$rows = $table->fetchAll($select);
-]]></programlisting>
-
-                </example>
-
-                You can also use a lookup as part of your query to further refine your fetch
-                operations. In this example the accounts table is queried as part of a search for
-                all new bugs reported by 'Bob'.
-            </para>
-
-            <para>
-
-                <example id="zend.db.table.qry.rows.set.refine.example">
-
-                    <title>Using a lookup table to refine the results of fetchAll()</title>
-
-                     <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$select = $table->select();
-$select->where('bug_status = ?', 'NEW')
-       ->join('accounts', 'accounts.account_name = bugs.reported_by')
-       ->where('accounts.account_name = ?', 'Bob');
-
-$rows = $table->fetchAll($select);
-]]></programlisting>
-
-                </example>
-
-            </para>
-
-            <para>
-                The <classname>Zend_Db_Table_Select</classname> is primarily used to constrain and
-                validate so that it may enforce the criteria for a legal SELECT query. However
-                there may be certain cases where you require the flexibility of the
-                <classname>Zend_Db_Table_Row</classname> component and do not require a writable or deletable row. For
-                this specific user case, it is possible to retrieve a row/rowset by passing a false
-                value to setIntegrityCheck. The resulting row/rowset will be returned as a 'locked'
-                row (meaning the save(), delete() and any field-setting methods will throw an
-                exception).
-            </para>
-
-            <example id="zend.db.table.qry.rows.set.integrity.example">
-
-                <title>Removing the integrity check on Zend_Db_Table_Select to allow JOINed rows</title>
-
-                <programlisting><![CDATA[
-$table = new Bugs();
-
-$select = $table->select()->setIntegrityCheck(false);
-$select->where('bug_status = ?', 'NEW')
-       ->join('accounts',
-              'accounts.account_name = bugs.reported_by',
-              'account_name')
-       ->where('accounts.account_name = ?', 'Bob');
-
-$rows = $table->fetchAll($select);
-]]></programlisting>
-
-            </example>
-
-        </sect3>
-
-    </sect2>
-
-    <sect2 id="zend.db.table.fetch-row">
-
-        <title>Querying for a Single Row</title>
-
-        <para>
-            You can query for a single row using criteria similar to that of the
-            <methodname>fetchAll()</methodname> method.
-        </para>
-
-        <example id="zend.db.table.fetch-row.example1">
-
-            <title>Example of finding a single row by an expression</title>
-
-             <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$select  = $table->select()->where('bug_status = ?', 'NEW')
-                           ->order('bug_id');
-
-$row = $table->fetchRow($select);
-]]></programlisting>
-
-        </example>
-
-        <para>
-            This method returns an object of type <classname>Zend_Db_Table_Row_Abstract</classname>. If the search
-            criteria you specified match no rows in the database table, then
-            <methodname>fetchRow()</methodname> returns PHP's <constant>NULL</constant> value.
-        </para>
-
-    </sect2>
-
-    <sect2 id="zend.db.table.info">
-
-        <title>Retrieving Table Metadata Information</title>
-
-        <para>
-            The <classname>Zend_Db_Table_Abstract</classname> class provides some information about its metadata. The
-            <methodname>info()</methodname> method returns an array structure with information about the table,
-            its columns and primary key, and other metadata.
-        </para>
-
-        <example id="zend.db.table.info.example">
-
-            <title>Example of getting the table name</title>
-
-             <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$info = $table->info();
-
-echo "The table name is " . $info['name'] . "\n";
-]]></programlisting>
-
-        </example>
-
-        <para>
-            The keys of the array returned by the <methodname>info()</methodname> method are described below:
-        </para>
-
-        <itemizedlist>
-            <listitem>
-                <para>
-                    <emphasis>name</emphasis> => the name of the table.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <emphasis>cols</emphasis> => an array, naming the column(s) of
-                    the table.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <emphasis>primary</emphasis> => an array, naming the column(s) in
-                    the primary key.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <emphasis>metadata</emphasis> => an associative array, mapping
-                    column names to information about the columns. This is the information returned
-                    by the <methodname>describeTable()</methodname> method.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <emphasis>rowClass</emphasis> => the name of the concrete class
-                    used for Row objects returned by methods of this table instance. This defaults
-                    to <classname>Zend_Db_Table_Row</classname>.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <emphasis>rowsetClass</emphasis> => the name of the concrete
-                    class used for Rowset objects returned by methods of this table instance. This
-                    defaults to <classname>Zend_Db_Table_Rowset</classname>.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <emphasis>referenceMap</emphasis> => an associative array, with
-                    information about references from this table to any parent tables. See
-                    <xref linkend="zend.db.table.relationships.defining" />.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <emphasis>dependentTables</emphasis> => an array of class names
-                    of tables that reference this table. See
-                    <xref linkend="zend.db.table.relationships.defining" />.
-                </para>
-            </listitem>
-
-            <listitem>
-                <para>
-                    <emphasis>schema</emphasis> => the name of the schema (or
-                    database or tablespace) for this table.
-                </para>
-            </listitem>
-        </itemizedlist>
-
-    </sect2>
-
-    <sect2 id="zend.db.table.metadata.caching">
-
-        <title>Caching Table Metadata</title>
-
-        <para>
-            By default, <classname>Zend_Db_Table_Abstract</classname> queries the
-            underlying database for <link linkend="zend.db.table.info">table
-                metadata</link> whenever that data is needed to perform table
-            operations. The table object fetches the table metadata from the
-            database using the adapter's <methodname>describeTable()</methodname> method.
-            Operations requiring this introspection include:
-        </para>
-
-        <itemizedlist>
-            <listitem><para><methodname>insert()</methodname></para></listitem>
-
-            <listitem><para><methodname>find()</methodname></para></listitem>
-
-            <listitem><para><methodname>info()</methodname></para></listitem>
-        </itemizedlist>
-
-        <para>
-            In some circumstances, particularly when many table objects are instantiated against
-            the same database table, querying the database for the table metadata for each instance
-            may be undesirable from a performance standpoint. In such cases, users may benefit by
-            caching the table metadata retrieved from the database.
-        </para>
-
-        <para>
-            There are two primary ways in which a user may take advantage of table metadata
-            caching:
-
-            <itemizedlist>
-                <listitem>
-                    <para>
-                        <emphasis>Call
-                        <classname>Zend_Db_Table_Abstract::setDefaultMetadataCache()</classname></emphasis> - This allows
-                        a developer to once set the default cache object to be used for all table
-                        classes.
-                    </para>
-                </listitem>
-
-                <listitem>
-                    <para>
-                        <emphasis>Configure
-                        <classname>Zend_Db_Table_Abstract::__construct()</classname></emphasis> - This allows a developer
-                        to set the cache object to be used for a particular table class instance.
-                    </para>
-                </listitem>
-            </itemizedlist>
-
-            In both cases, the cache specification must be either <constant>NULL</constant> (i.e., no cache
-            used) or an instance of
-            <link linkend="zend.cache.frontends.core"><classname>Zend_Cache_Core</classname></link>. The
-            methods may be used in conjunction when it is desirable to have both a default metadata
-            cache and the ability to change the cache for individual table objects.
-        </para>
-
-        <example id="zend.db.table.metadata.caching-default">
-
-            <title>Using a Default Metadata Cache for all Table Objects</title>
-
-            <para>
-                The following code demonstrates how to set a default metadata cache to be used for
-                all table objects:
-            </para>
-
-             <programlisting language="php"><![CDATA[
-<
-// First, set up the Cache
-$frontendOptions = array(
-    'automatic_serialization' => true
-    );
-
-$backendOptions  = array(
-    'cache_dir'                => 'cacheDir'
-    );
-
-$cache = Zend_Cache::factory('Core',
-                             'File',
-                             $frontendOptions,
-                             $backendOptions);
-
-// Next, set the cache to be used with all table objects
-Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
-
-// A table class is also needed
-class Bugs extends Zend_Db_Table_Abstract
-{
-    // ...
-}
-
-// Each instance of Bugs now uses the default metadata cache
-$bugs = new Bugs();
-]]></programlisting>
-
-        </example>
-
-        <example id="zend.db.table.metadata.caching-instance">
-
-            <title>Using a Metadata Cache for a Specific Table Object</title>
-
-            <para>
-                The following code demonstrates how to set a metadata cache for a specific table
-                object instance:
-            </para>
-
-             <programlisting language="php"><![CDATA[
-// First, set up the Cache
-$frontendOptions = array(
-    'automatic_serialization' => true
-    );
-
-$backendOptions  = array(
-    'cache_dir'                => 'cacheDir'
-    );
-
-$cache = Zend_Cache::factory('Core',
-                             'File',
-                             $frontendOptions,
-                             $backendOptions);
-
-// A table class is also needed
-class Bugs extends Zend_Db_Table_Abstract
-{
-    // ...
-}
-
-// Configure an instance upon instantiation
-$bugs = new Bugs(array('metadataCache' => $cache));
-]]></programlisting>
-
-        </example>
-
-        <note>
-
-            <title>Automatic Serialization with the Cache Frontend</title>
-
-            <para>
-                Since the information returned from the adapter's describeTable() method is an
-                array, ensure that the <methodname>automatic_serialization</methodname> option is set to
-                <methodname>true</methodname> for the <classname>Zend_Cache_Core</classname> frontend.
-            </para>
-
-        </note>
-
-        <para>
-            Though the above examples use <classname>Zend_Cache_Backend_File</classname>, developers may use
-            whatever cache backend is appropriate for the situation. Please see
-            <link linkend="zend.cache">Zend_Cache</link> for more information.
-        </para>
-
-        <sect3 id="zend.db.table.metadata.caching.hardcoding">
-            <title>Hardcoding Table Metadata</title>
-
-            <para>
-                To take metadata caching a step further, you can also choose to
-                hardcode metadata. In this particular case, however, any changes
-                to the table schema will require a change in your code. As such,
-                it is only recommended for those who are optimizing for
-                production usage.
-            </para>
-
-            <para>
-                The metadata structure is as follows:
-            </para>
-
-             <programlisting language="php"><![CDATA[
-protected $_metadata = array(
-    '<column_name>' => array(
-        'SCHEMA_NAME'      => <string>,
-        'TABLE_NAME'       => <string>,
-        'COLUMN_NAME'      => <string>,
-        'COLUMN_POSITION'  => <int>,
-        'DATA_TYPE'        => <string>,
-        'DEFAULT'          => NULL|<value>,
-        'NULLABLE'         => <bool>,
-        'LENGTH'           => <string - length>,
-        'SCALE'            => NULL|<value>,
-        'PRECISION'        => NULL|<value>,
-        'UNSIGNED'         => NULL|<bool>,
-        'PRIMARY'          => <bool>,
-        'PRIMARY_POSITION' => <int>,
-        'IDENTITY'         => <bool>,
-    ),
-    // additional columns...
-);
-]]></programlisting>
-
-            <para>
-                An easy way to get the appropriate values is to use the metadata
-                cache, and then to deserialize values stored in the cache.
-            </para>
-
-            <para>
-                You can disable this optimization by turning of the
-                <methodname>metadataCacheInClass</methodname> flag:
-            </para>
-
-             <programlisting language="php"><![CDATA[
-// At instantiation:
-$bugs = new Bugs(array('metadataCacheInClass' => false));
-
-// Or later:
-$bugs->setMetadataCacheInClass(false);
-]]></programlisting>
-
-            <para>
-                The flag is enabled by default, which ensures that the
-                <methodname>$_metadata</methodname> array is only populated once per
-                instance.
-            </para>
-        </sect3>
-    </sect2>
-
-    <sect2 id="zend.db.table.extending">
-
-        <title>Customizing and Extending a Table Class</title>
-
-        <sect3 id="zend.db.table.extending.row-rowset">
-
-            <title>Using Custom Row or Rowset Classes</title>
-
-            <para>
-                By default, methods of the Table class return a Rowset in instances of the concrete
-                class <classname>Zend_Db_Table_Rowset</classname>, and Rowsets contain a collection of instances of the
-                concrete class <classname>Zend_Db_Table_Row</classname> You can specify an alternative class to use for
-                either of these, but they must be classes that extend <classname>Zend_Db_Table_Rowset_Abstract</classname>
-                and <classname>Zend_Db_Table_Row_Abstract</classname>, respectively.
-            </para>
-
-            <para>
-                You can specify Row and Rowset classes using the Table constructor's options array,
-                in keys <methodname>'rowClass'</methodname> and <methodname>'rowsetClass'</methodname> respectively.
-                Specify the names of the classes using strings.
-            </para>
-
-            <example id="zend.db.table.extending.row-rowset.example">
-
-                <title>Example of specifying the Row and Rowset classes</title>
-
-                 <programlisting language="php"><![CDATA[
-class My_Row extends Zend_Db_Table_Row_Abstract
-{
-    ...
-}
-
-class My_Rowset extends Zend_Db_Table_Rowset_Abstract
-{
-    ...
-}
-
-$table = new Bugs(
-    array(
-        'rowClass'    => 'My_Row',
-        'rowsetClass' => 'My_Rowset'
-    )
-);
-
-$where = $table->getAdapter()->quoteInto('bug_status = ?', 'NEW')
-
-// Returns an object of type My_Rowset,
-// containing an array of objects of type My_Row.
-$rows = $table->fetchAll($where);
-]]></programlisting>
-
-            </example>
-
-            <para>
-                You can change the classes by specifying them with the <methodname>setRowClass()</methodname>
-                and <methodname>setRowsetClass()</methodname> methods. This applies to rows and rowsets created
-                subsequently; it does not change the class of any row or rowset objects you have
-                created previously.
-            </para>
-
-            <example id="zend.db.table.extending.row-rowset.example2">
-
-                <title>Example of changing the Row and Rowset classes</title>
-
-                 <programlisting language="php"><![CDATA[
-$table = new Bugs();
-
-$where = $table->getAdapter()->quoteInto('bug_status = ?', 'NEW')
-
-// Returns an object of type Zend_Db_Table_Rowset
-// containing an array of objects of type Zend_Db_Table_Row.
-$rowsStandard = $table->fetchAll($where);
-
-$table->setRowClass('My_Row');
-$table->setRowsetClass('My_Rowset');
-
-// Returns an object of type My_Rowset,
-// containing an array of objects of type My_Row.
-$rowsCustom = $table->fetchAll($where);
-
-// The $rowsStandard object still exists, and it is unchanged.
-]]></programlisting>
-
-            </example>
-
-            <para>
-                For more information on the Row and Rowset classes, see
-                <xref linkend="zend.db.table.row" /> and <xref linkend="zend.db.table.rowset" />.
-            </para>
-
-        </sect3>
-
-        <sect3 id="zend.db.table.extending.insert-update">
-
-            <title>Defining Custom Logic for Insert, Update, and Delete</title>
-
-            <para>
-                You can override the <methodname>insert()</methodname> and <methodname>update()</methodname> methods in
-                your Table class. This gives you the opportunity to implement custom code that is
-                executed before performing the database operation. Be sure to call the parent class
-                method when you are done.
-            </para>
-
-            <example id="zend.db.table.extending.insert-update.example">
-
-                <title>Custom logic to manage timestamps</title>
-
-                 <programlisting language="php"><![CDATA[
-class Bugs extends Zend_Db_Table_Abstract
-{
-    protected $_name = 'bugs';
-
-    public function insert(array $data)
-    {
-        // add a timestamp
-        if (empty($data['created_on'])) {
-            $data['created_on'] = time();
-        }
-        return parent::insert($data);
-    }
-
-    public function update(array $data, $where)
-    {
-        // add a timestamp
-        if (empty($data['updated_on'])) {
-            $data['updated_on'] = time();
-        }
-        return parent::update($data, $where);
-    }
-}
-]]></programlisting>
-
-            </example>
-
-            <para>
-                You can also override the <methodname>delete()</methodname> method.
-            </para>
-
-        </sect3>
-
-        <sect3 id="zend.db.table.extending.finders">
-
-            <title>Define Custom Search Methods in Zend_Db_Table</title>
-
-            <para>
-                You can implement custom query methods in your Table class, if you have frequent
-                need to do queries against this table with specific criteria. Most queries can be
-                written using <methodname>fetchAll()</methodname>, but this requires that you duplicate code to
-                form the query conditions if you need to run the query in several places in your
-                application. Therefore it can be convenient to implement a method in the Table
-                class to perform frequently-used queries against this table.
-            </para>
-
-            <example id="zend.db.table.extending.finders.example">
-
-                <title>Custom method to find bugs by status</title>
-
-                 <programlisting language="php"><![CDATA[
-class Bugs extends Zend_Db_Table_Abstract
-{
-    protected $_name = 'bugs';
-
-    public function findByStatus($status)
-    {
-        $where = $this->getAdapter()->quoteInto('bug_status = ?', $status);
-        return $this->fetchAll($where, 'bug_id');
-    }
-}
-]]></programlisting>
-
-            </example>
-
-        </sect3>
-
-        <sect3 id="zend.db.table.extending.inflection">
-
-            <title>Define Inflection in Zend_Db_Table</title>
-
-            <para>
-                Some people prefer that the table class name match a table name in the RDBMS by
-                using a string transformation called <emphasis>inflection</emphasis>.
-            </para>
-
-            <para>
-                For example, if your table class name is "<methodname>BugsProducts</methodname>", it would
-                match the physical table in the database called "<methodname>bugs_products</methodname>," if
-                you omit the explicit declaration of the <methodname>$_name</methodname> class property. In
-                this inflection mapping, the class name spelled in "CamelCase" format would be
-                transformed to lower case, and words are separated with an underscore.
-            </para>
-
-            <para>
-                You can specify the database table name independently from the class name by
-                declaring the table name with the <methodname>$_name</methodname> class property in each of
-                your table classes.
-            </para>
-
-            <para>
-                <classname>Zend_Db_Table_Abstract</classname> performs no inflection to map the class name to the table
-                name. If you omit the declaration of <methodname>$_name</methodname> in your table class, the
-                class maps to a database table that matches the spelling of the class name exactly.
-            </para>
-
-            <para>
-                It is inappropriate to transform identifiers from the database, because this can
-                lead to ambiguity or make some identifiers inaccessible. Using the SQL identifiers
-                exactly as they appear in the database makes <classname>Zend_Db_Table_Abstract</classname> both simpler
-                and more flexible.
-            </para>
-
-            <para>
-                If you prefer to use inflection, then you must implement the transformation
-                yourself, by overriding the <methodname>_setupTableName()</methodname> method in your Table
-                classes. One way to do this is to define an abstract class that extends
-                <classname>Zend_Db_Table_Abstract</classname>, and then the rest of your tables extend your new abstract
-                class.
-            </para>
-
-            <example id="zend.db.table.extending.inflection.example">
-
-                <title>Example of an abstract table class that implements inflection</title>
-
-                 <programlisting language="php"><![CDATA[
-abstract class MyAbstractTable extends Zend_Db_Table_Abstract
-{
-    protected function _setupTableName()
-    {
-        if (!$this->_name) {
-            $this->_name = myCustomInflector(get_class($this));
-        }
-        parent::_setupTableName();
-    }
-}
-
-class BugsProducts extends MyAbstractTable
-{
-}
-]]></programlisting>
-
-            </example>
-
-            <para>
-                You are responsible for writing the functions to perform inflection transformation.
-                Zend Framework does not provide such a function.
-            </para>
-
-        </sect3>
-
-    </sect2>
-
-</sect1>
-<!--
-vim:se ts=4 sw=4 et:
--->

Некоторые файлы не были показаны из-за большого количества измененных файлов