1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
2024-10-21 21:58:28 +03:00

178 lines
7.5 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 3e871fe7eab38f9b0398569c57a1dd0c21e69652 Maintainer: rjhdby 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>Работа библиотеки PHP с драйвером MongoDB (PHPLIB)</title>
<para>
После первоначальной настройки модуля продолжится объяснение того, как начать
работу с соответствующей пользовательской библиотекой для написания первого проекта.
</para>
<section>
<title>Установка библиотеки PHP через Composer</title>
<para>
Последнее, что необходимо установить перед тем,
как начать писать приложение, — это библиотека PHP.
</para>
<para>
Библиотеку будем устанавливать через пакетный менеджер
<link xlink:href="&url.mongodb.composer;">Composer</link>.
Инструкции по установке Composer на разные платформы опубликованы на его сайте.
</para>
<para>
Библиотеку устанавливают так:
<programlisting role="shell">
<![CDATA[
$ composer require mongodb/mongodb
]]>
</programlisting>
</para>
<para>
Будет выведено что-то вроде:
<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 создаст несколько файлов: <code>composer.json</code>,
<code>composer.lock</code> и директорию <code>vendor</code>,
содержащую саму библиотеку и другие зависимости, которые потребуются
в проекте.
</para>
</section>
<section>
<title>Работа с библиотекой PHP</title>
<para>
Кроме управления зависимостями, Composer также содержит
автозагрузчик классов для этих зависимостей. Необходимо убедиться,
что этот автозагрузчик включён в начало скрипта
или в код начальной загрузки приложения:
<programlisting role="php">
<![CDATA[
<?php
// Этот путь должен указывать на автозагрузчик Composer
require 'vendor/autoload.php';
]]>
</programlisting>
</para>
<para>
После этого можно использовать библиотеку
как описано <link xlink:href="&url.mongodb.library.docs;">в документации</link>.
</para>
<para>
Если ранее приходилось работать с драйвером MongoDB в других языках, API библиотеки
будет выглядеть знакомым. Он содержит
класс <link xlink:href="&url.mongodb.library.apidocs;/class/MongoDBClient/">Client</link>
для соединения с MongoDB,
класс <link xlink:href="&url.mongodb.library.apidocs;/class/MongoDBDatabase/">Database</link>
для операций уровня базы данных (например, команды, управление коллекциями)
и класс
<link xlink:href="&url.mongodb.library.apidocs;/class/MongoDBCollection">Collection</link>
для операций уровня коллекций (например, операций
<link xlink:href="&url.mongodb.wiki.crud;">CRUD</link>, управление индексами).
</para>
<para>
Например, вот как вставить документ в коллекцию
<emphasis>beers</emphasis> базы данных <emphasis>demo</emphasis>:
<programlisting role="php">
<![CDATA[
<?php
require 'vendor/autoload.php'; // подключаем автозагрузчик классов Composer
$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;
$result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );
echo "Идентификатор вставленного документа '{$result->getInsertedId()}'";
?>
]]>
</programlisting>
</para>
<para>
Поскольку вставленный документ не содержал поля <code>_id</code>,
модуль сгенерирует объект <classname>MongoDB\BSON\ObjectId</classname>,
чтобы сервера использовал его как <code>_id</code>. Это значение также становится доступно
вызывающей стороне через результирующий объект, который возвращается методом <code>insertOne</code>.
</para>
<para>
После вставки можно запросить только что вставленные данные.
Для этого вызывают метод <code>find</code>, который возвращает итерируемый
курсор:
<programlisting role="php">
<![CDATA[
<?php
require 'vendor/autoload.php'; // Подключаем автозагрузчик классов 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>
Хотя примеры не всегда добавляют очевидности, но BSON-документы и BSON-массивы по умолчанию
не сериализуются как специальные классы в библиотеке. Эти классы
расширяют класс <classname>ArrayObject</classname> для удобства и реализуют
интерфейсы модуля <interfacename>MongoDB\BSON\Serializable</interfacename>
и <interfacename>MongoDB\BSON\Unserializable</interfacename>, чтобы гарантировать,
что значения сохраняют тип при сериализации обратно в BSON. Это
помогает избежать предостережения в устаревшем модуле <code>mongo</code>, в котором массивы
могли превращаться в документы и наоборот. Дополнительную информацию
о преобразовании значений между PHP и BSON даёт спецификация
<xref linkend="mongodb.persistence"/>.
</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
-->