MongoDB は、現在非常に人気のある非リレーショナル データベースであり、レプリケーションや自動シャーディングのサポートなどの高可用性機能により、多くの企業に選ばれるテクノロジとなっています。 PHP は非常に人気のあるプログラミング言語であり、Web アプリケーションを開発するための主流言語の 1 つです。ただし、公式に提供されている MongoDB 拡張機能は、特にパフォーマンスと使いやすさの点で開発者のニーズを満たすことができないことは明らかであり、さまざまなニーズを持つドライバーの要件を満たすこともできません。開発者のニーズを満たすために、一部の独立系開発者は独自の MongoDB ドライバーを提供しています。
したがって、オープンソースで使いやすい MongoDB ドライバーが必要です。この記事では、そのような MongoDB ドライバーを実装する方法を説明します。
ステップ 1: MongoDB 拡張機能のインストールと MongoDB の構成
MongoDB を使用する前に、MongoDB 拡張機能と MongoDB をインストールする必要があります。 MongoDB 拡張機能は、次の方法でインストールできます。
pecl install mongodb
さらに、MongoDB を使用するには、MongoDB インスタンスを構成する必要があります。ローカル環境では、Docker コンテナを使用して MongoDB インスタンスを起動できます。以下は、MongoDB Docker コンテナをローカルにインストールして実行する例です。
docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=mongodb -e MONGO_INITDB_ROOT_PASSWORD=password --name mongodb mongo
上記のコマンドは、ローカル環境で MongoDB コンテナを起動し、ポート 27017 をマップして、PHP アプリケーションがそれに接続できるようにします。さらに、「mongodb」という名前のユーザー名とパスワードが設定されます。
ステップ 2: MongoDB ドライバーを作成する
次に、MongoDB ドライバーを作成しましょう。まず、MongoDB データベース インスタンスへの接続を作成する必要があります。以下は、MongoDB との接続を確立し、データベースを選択するコード例です。
$client = new MongoDBClient("mongodb://mongodb:27017", [ "username" => "mongodb", "password" => "password" ]); $db = $client->selectDatabase("test");
上記の例では、MongoDB の公式 PHP ライブラリ mongodb/mongodb
を使用して、 MongoDB インスタンス を選択し、test
データベースを選択しました。
次に、いくつかの基本クラス関数を実行する必要があります。以下に示すように、基本クラス MongoDBConnection
を作成し、その中でいくつかのパブリック メソッドを定義できます。
<?php namespace MyAppMongoDB; use MongoDBCollection; use MongoDBDatabase; class MongoDBConnection { protected Database $database; /** * 创建一个新的MongoDBConnection实例 */ public function __construct(Database $database) { $this->database = $database; } /** * 获取指定名称的集合 */ public function getCollection(string $name) : Collection { return $this->database->selectCollection($name); } }
上記と同様に、getCollection($name)
メソッドを定義します。指定された名前のコレクションを取得します。
最後に、基本クラスを拡張するさまざまなサブクラスを作成する必要があります。たとえば、「users」という名前の MongoDB コレクションにアクセスする場合は、「UserRepository」という名前のサブクラスを作成して MongoDBConnection
を継承し、 UserRepository
のさまざまなメソッドを実装します。
<?php namespace MyAppMongoDB; use MongoDBCollection; class UserRepository extends MongoDBConnection { /** * 获取所有用户 */ public function getAllUsers() : array { $collection = $this->getCollection("users"); $cursor = $collection->find(); return iterator_to_array($cursor); } /** * 根据id获取用户 */ public function getUserById(string $id) : ?array { $collection = $this->getCollection("users"); $document = $collection->findOne(["_id" => new MongoDBBSONObjectID($id)]); if(!$document) return null; return (array) $document; } /** * 保存用户 */ public function saveUser(array $data) : void { $collection = $this->getCollection("users"); $collection->insertOne($data); } }
上記のように、UserRepository
は MongoDBConnection
クラスを継承し、getAllUsers()
、getUserById()
、およびsaveUser()
メソッド。
ステップ 3: MongoDB ドライバーをテストする
最後に、MongoDB ドライバーが適切に動作するかどうかをテストする必要があります。上記の UserRepository
クラスの使用方法の例を示すサンプル コードを次に示します。
$userRepo = new UserRepository($db); // 保存新用户 $userRepo->saveUser([ "name" => "小明", "age" => 24, "gender" => "male" ]); //获取所有用户 $users = $userRepo->getAllUsers(); foreach ($users as $user){ echo "用户名:{$user['name']}, 年龄:{$user['age']}<br />"; } // 根据id获取用户 $user = $userRepo->getUserById("5fb03aedaaaebd686541ea07"); echo "{$user['name']}, {$user['age']}岁";
上記のコード スニペットでは、最初にユーザーを作成し、次に getAllUsers()# を使用します。 # #すべてのユーザーを取得し、
getUserById() メソッドを使用して ID に基づいてユーザー情報を取得します。
以上がPHP はオープンソース MongoDB ドライバーを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。