mirror of
https://github.com/php/doc-es.git
synced 2026-03-24 23:42:11 +01:00
173 lines
6.0 KiB
XML
173 lines
6.0 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: 3e871fe7eab38f9b0398569c57a1dd0c21e69652 Maintainer: PhilDaiguille Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
<section xml:id="mongodb.tutorial.library" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>Utilizar la biblioteca PHP para MongoDB (PHPLIB)</title>
|
|
|
|
<para>
|
|
Después de la configuración inicial de la extensión, se continuará explicando cómo comenzar
|
|
con la biblioteca de usuario correspondiente para escribir nuestro primer proyecto.
|
|
</para>
|
|
|
|
<section>
|
|
<title>Instalar la biblioteca PHP con Composer</title>
|
|
|
|
<para>
|
|
La última cosa que se debe instalar para comenzar la aplicación
|
|
en sí es la biblioteca PHP.
|
|
</para>
|
|
|
|
<para>
|
|
La biblioteca debe ser instalada con
|
|
<link xlink:href="&url.mongodb.composer;">Composer</link>, un gestor de
|
|
paquetes para PHP. Las instrucciones para instalar Composer en diferentes
|
|
plataformas pueden encontrarse en su sitio web.
|
|
</para>
|
|
|
|
<para>
|
|
Instalar la biblioteca ejecutando:
|
|
<programlisting role="shell">
|
|
<![CDATA[
|
|
$ composer require mongodb/mongodb
|
|
]]>
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
Esto producirá una salida similar a:
|
|
|
|
<programlisting role="text">
|
|
<![CDATA[
|
|
./composer.json has been created
|
|
Loading composer repositories with package information
|
|
Updating dependencies (including require-dev)
|
|
- Installing mongodb/mongodb (1.0.0)
|
|
Downloading: 100%
|
|
|
|
Writing lock file
|
|
Generating autoload files
|
|
]]>
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
Composer creará varios ficheros: <code>composer.json</code>,
|
|
<code>composer.lock</code>, y un directorio <code>vendor</code> que
|
|
contendrá la biblioteca y todas las otras dependencias que su proyecto podría necesitar.
|
|
</para>
|
|
</section>
|
|
|
|
<section>
|
|
<title>Utilizar la biblioteca PHP</title>
|
|
|
|
<para>
|
|
Además de gestionar sus dependencias, Composer también le proporcionará un
|
|
autocargador (para las clases de estas dependencias). Asegúrese de que esté incluido al inicio de su script o en el código de arranque de
|
|
su aplicación:
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Esta ruta debe apuntar al autocargador de Composer
|
|
require 'vendor/autoload.php';
|
|
]]>
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
Con esto hecho, ahora puede utilizar cualquier
|
|
funcionalidad como se describe en la
|
|
<link xlink:href="&url.mongodb.library.docs;">documentación de la biblioteca</link>.
|
|
</para>
|
|
|
|
<para>
|
|
Si ha utilizado controladores MongoDB en otros lenguajes, la API de la
|
|
biblioteca debería resultarle familiar. Contiene una clase
|
|
<link xlink:href="&url.mongodb.library.apidocs;/class/MongoDBClient/">Client</link>
|
|
para conectarse a MongoDB, una clase
|
|
<link xlink:href="&url.mongodb.library.apidocs;/class/MongoDBDatabase/">Database</link>
|
|
para las operaciones a nivel de la base de datos (por ejemplo, los comandos, la gestión de las colecciones),
|
|
y una clase
|
|
<link xlink:href="&url.mongodb.library.apidocs;/class/MongoDBCollection">Collection</link>
|
|
para las operaciones a nivel de la colección (por ejemplo, los métodos
|
|
<link xlink:href="&url.mongodb.wiki.crud;">CRUD</link>, la gestión de los índices).
|
|
</para>
|
|
|
|
<para>
|
|
Como ejemplo, aquí se muestra cómo insertar un documento en la colección
|
|
<emphasis>beers</emphasis> de la base de datos <emphasis>demo</emphasis>:
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
require 'vendor/autoload.php'; // incluir el autocargador de Composer
|
|
|
|
$client = new MongoDB\Client("mongodb://localhost:27017");
|
|
$collection = $client->demo->beers;
|
|
|
|
$result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );
|
|
|
|
echo "Inserted with Object ID '{$result->getInsertedId()}'";
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
Dado que el documento insertado no contenía un campo <code>_id</code>, la extensión
|
|
generará un <classname>MongoDB\BSON\ObjectId</classname> para que el servidor
|
|
lo utilice como <code>_id</code>. Este valor también está disponible para
|
|
el llamador a través del objeto de resultado devuelto por el método <code>insertOne</code>.
|
|
</para>
|
|
|
|
<para>
|
|
Después de la inserción, se pueden consultar los datos que acaba de insertar. Para ello, se utiliza el método <code>find</code>, que devuelve un cursor
|
|
iterable:
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
require 'vendor/autoload.php'; // incluir el autocargador de Composer
|
|
|
|
$client = new MongoDB\Client("mongodb://localhost:27017");
|
|
$collection = $client->demo->beers;
|
|
|
|
$result = $collection->find( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );
|
|
|
|
foreach ($result as $entry) {
|
|
echo $entry['_id'], ': ', $entry['name'], "\n";
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
Aunque los ejemplos no lo muestran, los documentos BSON y los arrays
|
|
son deserializados como clases especiales en la biblioteca por defecto. Estas clases extienden <classname>ArrayObject</classname> para facilidad de uso
|
|
e implementan las interfaces <interfacename>MongoDB\BSON\Serializable</interfacename>
|
|
y <interfacename>MongoDB\BSON\Unserializable</interfacename> de la extensión para garantizar que los valores conserven su tipo cuando se serializan nuevamente en BSON. Esto evita un inconveniente de la antigua extensión <code>mongo</code>
|
|
donde los arrays podrían convertirse en documentos, y viceversa. Ver la
|
|
especificación <xref linkend="mongodb.persistence"/> para más información sobre
|
|
cómo se convierten los valores entre PHP y BSON.
|
|
</para>
|
|
</section>
|
|
</section>
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|