MongoDB\Client::__construct()
定义
MongoDB\Client::__construct()
构造一个新的
Client
实例。function __construct( ?string $uri = null, array $uriOptions = [], array $driverOptions = [] )
参数
$uri
: 细绳MongoDB连接string 。 有关更多信息,请参阅 MongoDB 手册中的连接字符串。
如果未指定,则默认为
"mongodb://127.0.0.1:27017"
。URI 组件中的任何特殊字符都需要根据 RFC3986 进行编码 。这与用户名和密码尤其相关,因为用户名和密码通常包含特殊字符,例如
@
、:
或%
。 通过 Unix 域套接字连接时,套接字路径可能包含特殊字符,例如斜线,必须进行编码。 rawurlencode() 函数可用于对 URI 的组成部分进行编码。$uriOptions
: array指定其他 URI 选项,例如身份验证档案或查询string参数。
$uriOptions
中指定的选项优先于$uri
string 中存在的任何类似选项,并且不需要根据 RFC3986 进行编码 。请参阅 MongoDB\Driver\Manager::__construct() 扩展文档以获取支持的选项列表。
$driverOptions
: array指定特定于 PHP 驱动程序的选项。 除了 扩展 支持的驱动程序选项 ,该库还支持指定默认 类型映射 应用于它创建的游标。
名称类型说明autoEncryption
阵列
在驱动程序中配置客户端字段级加密的选项。 请参阅 扩展文档 了解支持的加密选项列表。
MongoDB\Client
如果为keyVaultClient
选项提供了 { },它将解包到 MongoDB\Driver\Manager 对于扩展名。1.6 版本中的新增功能。
驱动
阵列
要传递给服务器握手的其他驱动程序元数据。 这是一个包含
name
、version
和platform
字符串字段的数组。 例如:[ 'name' => 'my-driver', 'version' => '1.2.3-dev', 'platform' => 'some-platform', ] 此功能主要面向自定义驱动程序和 ODM,它们可能希望向服务器证明自己的身份以进行诊断。 希望表明身份的应用程序应使用
appName
URI 选项,而不是此选项。版本 1.7 中的新增内容。
ServerApi
用于在客户端上声明 API 版本。 stable APIMongoDB Server有关更多信息,请参阅 手册中的 页面。
1.9 版本中的新功能。
typeMap
阵列
默认 类型映射 应用于游标,决定如何将 BSON 文档转换为 PHP 值。该库默认使用以下类型映射:
[ 'array' => 'MongoDB\Model\BSONArray', 'document' => 'MongoDB\Model\BSONDocument', 'root' => 'MongoDB\Model\BSONDocument', ] allow_invalid_hostname
布尔
如果
true
,则禁用主机名验证。 默认为false
。允许无效的主机名可能会使驱动程序 遭受中间人攻击。
自 1.6 版起已弃用: 此选项已被弃用。 请改用
tlsAllowInvalidHostnames
URI 选项。ca_dir
字符串
正确哈希证书目录的路径。 默认使用系统证书存储区。
如果未指定,则回退到已弃用的
capath
SSL 上下文选项。ca_file
字符串
证书颁发机构文件的路径。 默认使用系统证书存储区。
如果未指定,则回退到已弃用的
cafile
SSL 上下文选项。自 1.6 版起已弃用: 此选项已被弃用。 请改用
tlsCAFile
URI 选项。crl_file
字符串
证书吊销列表文件的路径。
pem_file
字符串
用于客户端身份验证的 PEM 编码证书的路径。
如果未指定,则回退到已弃用的
local_cert
SSL 上下文选项。自 1.6 版起已弃用: 此选项已被弃用。 请改用
tlsCertificateKeyFile
URI 选项。pem_pwd
字符串
PEM 编码证书的密码(如果适用)。
如果未指定,则回退到已弃用的
passphrase
SSL 上下文选项。自 1.6 版起已弃用: 此选项已被弃用。 请改用
tlsCertificateKeyFilePassword
URI 选项。weak_cert_validation
布尔
禁用证书验证
true
。 默认为false
。如果未指定,则回退到已弃用的
allow_self_signed
SSL 上下文选项。自 1.6 版起已弃用: 此选项已被弃用。 请改用
tlsAllowInvalidCertificates
URI 选项。上下文
resource
SSL 上下文选项 用作其他驱动程序选项(如指定)的回退。请注意,驱动程序不会查阅默认流上下文。
支持此选项是为了实现向后兼容,但应视为已弃用。
错误/异常
MongoDB\Exception\InvalidArgumentException
用于与参数或选项解析相关的错误。
MongoDB\ 驱动程序\Exception\InvalidArgumentException 与扩展级别的参数或选项解析相关的错误。
MongoDB\ 驱动程序\Exception\RuntimeException 对于扩展级别的其他错误(例如连接错误)。
行为
A MongoDB\Driver\Manager 是在内部构建的。根据MongoDB Server 发现和监控 规范,MongoDB \Driver\Manager::__construct() 不执行 I/O。执行第一个操作时,将按需初始化连接。
示例
连接到独立服务器
如果您未指定 $uri
值,驱动程序将通过端口 27017
连接到 127.0.0.1
上独立运行的 mongod
。要连接到不同的服务器,请在创建 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 和身份验证进行连接
以下示例演示了如何使用 SSL 和身份验证连接到 MongoDB 副本集,这也是针对 MongoDB Atlas 的用法:
$client = new MongoDB\Client( 'mongodb://myUsername:myPassword@rs1.example.com,rs2.example.com/?ssl=true&replicaSet=myReplicaSet&authSource=admin' );
或者,可以在构造函数的 $uriOptions
参数中指定身份验证档案和 URI 参数:
$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
对象。 以下示例演示了如何让库将所有内容反序列化为 PHP 数组,就像在旧版mongo
扩展中所做的那样。
$client = new MongoDB\Client( null, [], [ 'typeMap' => [ 'root' => 'array', 'document' => 'array', 'array' => 'array', ], ] );