Files
2024-10-21 23:39:55 -03:00

179 lines
5.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 3e871fe7eab38f9b0398569c57a1dd0c21e69652 Maintainer: leonardolara Status: ready --><!-- CREDITS: leonardolara -->
<section xml:id="mongodb.tutorial.library" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Usando a Biblioteca do PHP para o MongoDB (PHPLIB)</title>
<para>
Após a configuração inicial da extensão, continuaremos explicando como começar
a usar a biblioteca correspondente no nível do usuário para escrever nosso primeiro projeto.
</para>
<section>
<title>Instalando a Biblioteca do PHP com o Composer</title>
<para>
A última coisa que ainda precisamos instalar para começar a usar o aplicativo
em si é a biblioteca PHP.
</para>
<para>
A biblioteca precisa ser instalada com o
<link xlink:href="&url.mongodb.composer;">Composer</link>, um gerenciador de pacotes
para PHP. Instruções para instalar o Composer em diversas plataformas podem ser
encontradas em seu site.
</para>
<para>
Instale a biblioteca executando:
<programlisting role="shell">
<![CDATA[
$ composer require mongodb/mongodb
]]>
</programlisting>
</para>
<para>
O resultado será algo como:
<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>
O Composer criará vários arquivos: <code>composer.json</code>,
<code>composer.lock</code> e um diretório <code>vendor</code> que
conterá a biblioteca e quaisquer outras dependências do seu projeto pode exigir.
</para>
</section>
<section>
<title>Usando a Biblioteca do PHP</title>
<para>
Além de gerenciar suas dependências, o Composer também fornecerá
um carregador automático (para as classes dessas dependências). Certifique-se de que
ele esteja incluído no início do seu script ou no código de inicialização da sua
aplicação:
<programlisting role="php">
<![CDATA[
<?php
// Este caminho deve apontar para o carregador automático do Composer
require 'vendor/autoload.php';
]]>
</programlisting>
</para>
<para>
Com isto feito, agora você pode usar qualquer funcionalidade descrita na
<link xlink:href="&url.mongodb.library.docs;">documentação da biblioteca</link>.
</para>
<para>
Se você usou drivers MongoDB em outras linguagens, a API da biblioteca
deverá parecer familiar. Ele contém uma
classe <link xlink:href="&url.mongodb.library.apidocs;/class/MongoDBClient/">Client</link>
para conexão com o MongoDB, uma
classe <link xlink:href="&url.mongodb.library.apidocs;/class/MongoDBDatabase/">Database</link>
para operações em nível de banco de dados (por exemplo, comandos, gerenciamento de coleção)
e uma
classe <link xlink:href="&url.mongodb.library.apidocs;/class/MongoDBCollection">Collection</link>
para operações em nível de coleção (por exemplo,
métodos <link xlink:href="&url.mongodb.wiki.crud;">CRUD</link>, gerenciamento de índice).
</para>
<para>
Por exemplo, é assim que você insere um documento na
coleção <emphasis>beers</emphasis> do banco de dados
<emphasis>demo</emphasis>:
<programlisting role="php">
<![CDATA[
<?php
require 'vendor/autoload.php'; // inclui o auto-carregador do Composer
$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;
$result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );
echo "Inserido com ID do Objeto '{$result->getInsertedId()}'";
?>
]]>
</programlisting>
</para>
<para>
Como o documento inserido não continha um campo <code>_id</code>, a
extensão irá gerar um <classname>MongoDB\BSON\ObjectId</classname> para
o servidor usar como <code>_id</code>. Este valor também é disponibilizado
ao chamador por meio do objeto de resultado retornado pelo método
<code>insertOne</code>.
</para>
<para>
Após a inserção, você pode consultar os dados que acabou de inserir.
Para isso, você usa o método <code>find</code>, que retorna um cursor
iterável:
<programlisting role="php">
<![CDATA[
<?php
require 'vendor/autoload.php'; // inclui o auto-carregador do 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>
Embora possa não ser aparente nos exemplos, os documentos e arrays do BSON são
desserializados como classes especiais na biblioteca por padrão. Essas classes
estendem <classname>ArrayObject</classname> para usabilidade e implementam as
interfaces <interfacename>MongoDB\BSON\Serializable</interfacename> e
<interfacename>MongoDB\BSON\Unserializable</interfacename> da extensão para
garantir que os valores preservem seu tipo quando serializados de volta para BSON. Isso
evita uma ressalva na extensão <code>mongo</code> legada, onde arrays
podem se transformar em documentos e vice-versa. Consulte a
especificação <xref linkend="mongodb.persistence"/> para obter mais informações sobre
como os valores são convertidos entre PHP e 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
-->