MongoDB용 PHP 라이브러리(PHPLIB) 사용

초기 드라이버 설정 후 첫 번째 프로젝트를 작성하기 위해 MongoDB 드라이버 및 해당 사용자 영역 라이브러리를 시작하는 방법을 계속 설명합니다.


Composer로 PHP 라이브러리 설치하기

응용 프로그램 자체를 시작하기 위해 아직 설치해야 하는 마지막 것은 PHP 라이브러리입니다.

라이브러리는 PHP용 패키지 관리자인 » Composer로 설치해야 합니다. 다양한 플랫폼에 Composer를 설치하기 위한 지침은 웹사이트에서 찾을 수 있습니다.

다음을 실행하여 라이브러리를 설치합니다.

$ composer require mongodb/mongodb
                

다음과 유사한 결과를 출력합니다.

./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
                

Composer는 composer.json, composer.lock 및 라이브러리 및 프로젝트에 필요할 수 있는 기타 종속성을 포함할 공급업체 디렉토리와 같은 여러 파일을 생성합니다.


PHP 라이브러리 사용

종속성을 관리하는 것 외에도 Composer는 자동 로더(해당 종속성의 클래스용)도 제공합니다. 스크립트 시작 부분이나 애플리케이션의 부트스트랩 코드에 포함되어 있는지 확인합니다.

                  
<?php
// This path should point to Composer's autoloader
require 'vendor/autoload.php';
                  
                

이 작업이 완료되면 이제 » 라이브러리 설명서에 설명된 대로 모든 기능을 사용할 수 있습니다.

이전에 이전 드라이버(예: mongo 확장)를 사용한 적이 있다면 라이브러리의 API가 친숙해 보일 것입니다. 여기에는 MongoDB에 연결하기 위한 » 클라이언트 클래스와 데이터베이스 수준 작업(예: 명령, 컬렉션 관리)을 위한 » 데이터베이스 클래스 및 컬렉션 수준 작업(예: » CRUD 메서드, 색인 관리)을 위한 » 컬렉션 클래스가 포함되어 있습니다. 다양한 수집 메서드의 이름이 명확성을 위해 그리고 언어에 구애받지 않는 새로운 » 사양에 따라 변경되었습니다.

예를 들어, 다음은 데모 데이터베이스의 beers 컬렉션에 문서를 삽입하는 방법입니다.

                  
<?php
require 'vendor/autoload.php'; // include Composer's autoloader

$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()}'";
?>
                  
                

생성된 _id 필드를 입력 문서에 주입하는 대신(이전 드라이버에서 수행된 것처럼) 이제 insertOne 메서드에서 반환된 결과 개체를 통해 사용할 수 있습니다.

삽입 후에는 물론 방금 삽입한 데이터를 쿼리할 수도 있습니다. 이를 위해 반복 가능한 커서를 반환하는 find 메서드를 사용합니다.

                  
<?php
require 'vendor/autoload.php'; // include Composer's autoloader

$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";
}
?>
                  
                

예제에서는 명확하지 않을 수 있지만 BSON 문서 및 배열은 기본적으로 라이브러리의 유형 클래스로 직렬화 해제됩니다. 이러한 클래스는 값이 BSON으로 다시 직렬화될 때 해당 유형을 유지하도록 하여 배열이 문서로 변환되거나 그 반대의 경우가 발생할 수 있는 이전 드라이버의 경고를 방지합니다. 또한 클래스는 사용성을 향상시키기 위해 ArrayObject를 확장합니다. Persisting Data 사양을 읽으면 PHP 변수와 BSON 간의 직렬화 및 역직렬화가 드라이버와 라이브러리에서 처리되는 방식에 대한 자세한 정보를 찾을 수 있습니다.