MongoDB\Client::__construct()
定義
MongoDB\Client::__construct()
新しい
Client
インスタンスを構築します。function __construct( ?string $uri = null, array $uriOptions = [], array $driverOptions = [] )
パラメーター
$uri
: stringMongoDB接続string 。 詳細については、MongoDB マニュアルの接続文字列 を参照してください。
指定しない場合、デフォルトは
"mongodb://127.0.0.1:27017"
になります。URI コンポーネント内の特殊文字は、 RFC3986 に従ってエンコードする必要があります。 。これは特にユーザー名とパスワードに関連し、
@
、:
、%
などの特殊文字が含まれることが多いです。 Unix ドメイン ソケット経由で接続する場合、ソケット パスにスラッシュなどの特殊文字が含まれる場合があるため、エンコードする必要があります。 rawr値() 関数は、URI の構成部分をエンコードするために使用できます。$uriOptions
: 配列認証資格情報やクエリstringパラメーターなどの追加の URI オプションを指定します。
$uriOptions
で指定されたオプションは、$uri
string に存在する同様のオプションよりも優先され、 RFC3986 に従ってエンコードされる必要はありません。 。MongoDB\Driver\Manager::__construct() サポートされているオプションのリストについては、 拡張機能 のドキュメントを参照してください。
$driverOptions
: 配列PHP ドライバーに固有のオプションを指定します。 拡張機能 でサポートされているドライバー オプションに加えて、 、ライブラリはデフォルトの 型マップ の指定を追加します 作成されたカーソルに適用されます。
名前タイプ説明autoEncryption配列ドライバーでクライアント側のフィールドレベル暗号化を構成するオプション。 詳細については、 拡張機能のドキュメント を参照してください サポートされている暗号化オプションのリストについては、 を参照してください。
MongoDB\Client
オプションにkeyVaultClient
が指定されている場合は、 MongoDB\Driver\Manager に解凍されます 拡張機能の 。バージョン 1.6 の新機能.
ドライバー配列サーバー ハンドシェイクに渡す追加のドライバー メタデータ。 これは、
name
、version
、platform
string フィールドを含む配列です。 例:[ 'name' => 'my-driver', 'version' => '1.2.3-dev', 'platform' => 'some-platform', ] この機能は、主にカスタム ドライバーと ODM 用に設計されており、診断目的でサーバーに自分自身を識別する必要がある可能性があります。 アプリケーションで自分自身を識別する場合は、このオプションの代わりに
appName
URI オプションを使用する必要があります。バージョン 1.7 の新機能。
ServerApiクライアントで API バージョンを宣言するために使用されます。 詳細については、サーバー マニュアルのStable APIページを参照してください。
バージョン 1.9 の新機能。
typeMap配列デフォルト のタイプ マップ カーソルに適用される 。これは、BSON ドキュメントが PHP 値に変換される方法を決定します。ライブラリはデフォルトで次のタイプ マップを使用します。
[ 'array' => 'MongoDB\Model\BSONArray', 'document' => 'MongoDB\Model\BSONDocument', 'root' => 'MongoDB\Model\BSONDocument', ] allow_invalid_hostnameブール値true
の場合はホスト名の検証を無効にします。 デフォルトはfalse
です。無効なホスト名を許可すると、ドライバーが 中間者攻撃(man-in-the-middle attack)に遭遇する可能性があります。
バージョン 1.6 から非推奨: このオプションは非推奨になりました。 代わりに、
tlsAllowInvalidHostnames
URI オプションを使用してください。ca_dirstring正しくハッシュされた証明書ディレクトリへのパス。 デフォルトでは、システム証明書ストアが使用されます。
指定されていない場合は、非推奨の
capath
SSL コンテキスト オプションに戻ります。ca_filestring認証局ファイルへのパス。 デフォルトでは、システム証明書ストアが使用されます。
指定されていない場合は、非推奨の
cafile
SSL コンテキスト オプションに戻ります。バージョン 1.6 から非推奨: このオプションは非推奨になりました。 代わりに、
tlsCAFile
URI オプションを使用してください。CRL_filestring証明書失効リスト ファイルへのパス。pem_filestringクライアント認証に使用する PEM でエンコードされた証明書へのパス。
指定されていない場合は、非推奨の
local_cert
SSL コンテキスト オプションに戻ります。バージョン 1.6 から非推奨: このオプションは非推奨になりました。 代わりに、
tlsCertificateKeyFile
URI オプションを使用してください。pem_pwdstringPEM でエンコードされた証明書のパスフレーズ(該当する場合)。
指定されていない場合は、非推奨の
passphrase
SSL コンテキスト オプションに戻ります。バージョン 1.6 から非推奨: このオプションは非推奨になりました。 代わりに、
tlsCertificateKeyFilePassword
URI オプションを使用してください。weekly_cert_validationブール値証明書の検証
true
を無効にします。 デフォルトはfalse
です。指定されていない場合は、非推奨の
allow_self_signed
SSL コンテキスト オプションに戻ります。バージョン 1.6 から非推奨: このオプションは非推奨になりました。 代わりに、
tlsAllowInvalidCertificates
URI オプションを使用してください。contextresourceSSL コンテキスト オプション 他のドライバー オプション(指定に従って)のフォールバックとして使用されます。ドライバーはデフォルトのストリーム コンテキストを参照しないことに注意してください。
このオプションは下位互換性のためにサポートされていますが、非推奨と考慮する必要があります。
エラーと例外
MongoDB\Exception\InvalidArgumentException
は、パラメータまたはオプションの解析に関連するエラーの場合は です。
MongoDB\Driver\Exception\InvalidArgmentException 拡張レベルでのパラメータまたはオプションの解析に関連するエラーの場合。
MongoDB\Driver\Exception\RuntimeException 拡張レベルのその他のエラー(例:)。
動作
A MongoDB\Driver\Manager は、内部的に構築されます。サーバー検出と監視 ごとの 仕様、 MongoDB\Driver\Manager::__construct() は I/O を実行しません。接続は、最初の操作が実行されたときに、オンデマンドで初期化されます。
例
スタンドアロン サーバーへの接続
$uri
値を指定しないと、ドライバーにより、127.0.0.1
上のスタンドアロンの mongod
にポート 27017
を通じて接続が行われます。別のサーバーに接続するには、Client
インスタンスを作成するときに、対応する接続文字列を最初のパラメータとして渡します。
$client = new MongoDB\Client('mongodb://mongodb-deployment:27017');
レプリカセットへの接続
次の例は、カスタム読み取り設定を使用してレプリカ セットに接続する方法を示しています。
$client = new MongoDB\Client( 'mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet', [ 'readPreference' => 'secondaryPreferred', ] );
SSL と認証による接続
次の例は、MongoDB Atlas で使用される SSL と認証を使用して MongoDB レプリカ セットに接続する方法を示しています。
$client = new MongoDB\Client( 'mongodb://myUsername:myPassword@rs1.example.com,rs2.example.com/?ssl=true&replicaSet=myReplicaSet&authSource=admin' );
あるいは、認証資格情報と URI パラメーターをコンストラクターの $uriOptions
パラメーターで指定することもできます。
$client = new MongoDB\Client( 'mongodb://rs1.example.com,rs2.example.com/' [ 'username' => 'myUsername', 'password' => 'myPassword', 'ssl' => true, 'replicaSet' => 'myReplicaSet', 'authSource' => 'admin', ], );
ドライバーは、追加の SSL オプションをサポートしており、コンストラクターの $driverOptions
パラメーターで指定できます。これらのオプションについては、MongoDB\Driver\Manager::__construct() ドキュメントで説明されています。
カスタム型マップの指定
デフォルトでは、MongoDB PHP ライブラリは BSON ドキュメントと配列をそれぞれMongoDB\Model\BSONDocument
} オブジェクトとMongoDB\Model\BSONArray
オブジェクトとして逆シリアル化します。 次の例では、レガシーのmongo
拡張機能と同様に、ライブラリですべてが PHP 配列として逆直列化されている方法を示しています。
$client = new MongoDB\Client( null, [], [ 'typeMap' => [ 'root' => 'array', 'document' => 'array', 'array' => 'array', ], ] );
その他の参照
マニュアルの 接続 URI 形式string MongoDBを参照してください。
サーバーの検出と監視 仕様