定義
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
: 配列認証資格情報やクエリ文字列パラメーターなどの追加の 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
配列
builderEncoder
MongoDB\Codec\Encoder
クエリ ビルダと集計ビルダに使用するエンコード。設定されていない場合、このオプションはデフォルトで
MongoDB\Builder\BuilderEncoder
クラスの新しいインスタンスになります。バージョン1.21の新機能。
allow_invalid_hostname
ブール値
true
の場合はホスト名の検証を無効にします。 デフォルトはfalse
です。無効なホスト名を許可すると、ドライバーが中間者攻撃(man-in-the-middle attack)に遭遇する可能性があります。
バージョン 1.6 から非推奨: このオプションは非推奨になりました。 代わりに、
tlsAllowInvalidHostnames
URI オプションを使用してください。ca_dir
string
正しくハッシュされた証明書ディレクトリへのパス。 デフォルトでは、システム証明書ストアが使用されます。
指定されていない場合は、非推奨の
capath
SSL コンテキスト オプションに戻ります。ca_file
string
認証局ファイルへのパス。 デフォルトでは、システム証明書ストアが使用されます。
指定されていない場合は、非推奨の
cafile
SSL コンテキスト オプションに戻ります。バージョン 1.6 から非推奨: このオプションは非推奨になりました。 代わりに、
tlsCAFile
URI オプションを使用してください。CRL_file
string
証明書失効リスト ファイルへのパス。
pem_file
string
クライアント認証に使用する PEM でエンコードされた証明書へのパス。
指定されていない場合は、非推奨の
local_cert
SSL コンテキスト オプションに戻ります。バージョン 1.6 から非推奨: このオプションは非推奨になりました。 代わりに、
tlsCertificateKeyFile
URI オプションを使用してください。pem_pwd
string
PEM でエンコードされた証明書のパスフレーズ(該当する場合)。
指定されていない場合は、非推奨の
passphrase
SSL コンテキスト オプションに戻ります。バージョン 1.6 から非推奨: このオプションは非推奨になりました。 代わりに、
tlsCertificateKeyFilePassword
URI オプションを使用してください。weekly_cert_validation
ブール値
証明書の検証
true
を無効にします。 デフォルトはfalse
です。指定されていない場合は、非推奨の
allow_self_signed
SSL コンテキスト オプションに戻ります。バージョン 1.6 から非推奨: このオプションは非推奨になりました。 代わりに、
tlsAllowInvalidCertificates
URI オプションを使用してください。context
resource
他のドライバー オプション(指定)のフォールバックとして使用する SSL コンテキスト オプション。ドライバーはデフォルトのストリーム コンテキストを参照しないことに注意してください。
このオプションは下位互換性のためにサポートされていますが、非推奨と考慮する必要があります。
エラーと例外
MongoDB\Exception\InvalidArgumentException
は、パラメータまたはオプションの解析に関連するエラーの場合は です。
拡張レベルでのパラメータまたはオプションの解析に関連するエラーの場合は、 MongoDB\Driver\Exception\InvalidArメントException 。
拡張レベルのその他のエラー(例: 接続エラー)の場合は、 MongoDB\Driver\Exception\RuntimeException 。
動作
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を参照してください。