文档菜单
文档首页
/ / /
PHP 库手册
/ /

MongoDB\Client::__construct()

本页内容

  • 定义
  • 参数
  • 错误/异常
  • 行为
  • 示例
  • 另请参阅
MongoDB\Client::__construct()

构建一个新的Client实例。

function __construct(
?string $uri = null,
array $uriOptions = [],
array $driverOptions = []
)
$uri : 字符串

MongoDB连接字符串。请参考MongoDB手册中的连接字符串 获取更多信息。

如果未指定,默认为 "mongodb://127.0.0.1:27017"

URI组件中的任何特殊字符都需要根据 RFC 3986 进行编码。这尤其适用于用户名和密码,它们通常包含特殊字符,如 @:%。通过Unix域套接字连接时,套接字路径可能包含特殊字符(如斜杠),必须进行编码。可以使用 rawurlencode() 函数对URI的组成部分进行编码。

$uriOptions : 数组

指定额外的URI选项,例如身份验证凭据或查询字符串参数。在$uriOptions中指定的选项优先于$uri字符串中存在的任何类似选项,并且不需要根据RFC 3986进行编码。

有关支持的选项列表,请参阅MongoDB\Driver\Manager::__construct()扩展文档。

$driverOptions : 数组

指定针对PHP驱动程序的特定选项。除了由扩展支持的驱动程序选项外,该库还支持指定默认的类型映射,将其应用到它创建的游标中。

名称
类型
描述
autoEncryption
数组

配置客户端字段级加密的选项。有关支持的加密选项列表,请参阅扩展文档

如果为 keyVaultClient 选项提供了 MongoDB\Client,它将被解包为 MongoDB\Driver\Manager 以供扩展使用。

新功能1.6.

驱动程序
数组

要传递给服务器握手的附加驱动程序元数据。这是一个包含 nameversionplatform 字符串字段的数组。例如

[
'name' => 'my-driver',
'version' => '1.2.3-dev',
'platform' => 'some-platform',
]

此功能主要设计用于自定义驱动程序和ODMs,它们可能希望为了诊断目的让服务器识别自己。希望识别自己的应用程序应使用 appName URI 选项而不是此选项。

新功能1.7.

serverApi

用于在客户端声明API版本。有关更多信息,请参阅服务器手册中的 稳定API 页面。

新功能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 选项代替。

context
资源

SSL 上下文选项 被用作其他驱动程序选项(如指定)的回退选项。请注意,驱动程序不会咨询默认的流上下文。

此选项为向后兼容性提供支持,但应考虑已弃用。

MongoDB\Exception\InvalidArgumentException 与解析参数或选项相关的错误。

MongoDB\Driver\Exception\InvalidArgumentException 与扩展级别上解析参数或选项相关的错误。

MongoDB\Driver\Exception\RuntimeException 与扩展级别上的其他错误相关(例如连接错误)。

内部构造了一个 MongoDB\Driver\Manager。根据服务器发现和监控规范,MongoDB\Driver\Manager::__construct()不执行任何I/O操作。连接将在首次执行操作时按需初始化。

如果您未指定 $uri 值,则驱动程序将通过端口 27017 连接到位于 127.0.0.1 的独立 mongod。要连接到不同的服务器,在创建 Client 实例时,将相应的连接字符串作为第一个参数传递

<?php
$client = new MongoDB\Client('mongodb://mongodb-deployment:27017');

以下示例演示了如何使用自定义读取偏好连接到复制集

<?php
$client = new MongoDB\Client(
'mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet',
[
'readPreference' => 'secondaryPreferred',
]
);

以下示例演示了如何使用 SSL 和身份验证连接到 MongoDB 复制集,如用于 MongoDB Atlas

<?php
$client = new MongoDB\Client(
'mongodb://myUsername:myPassword@rs1.example.com,rs2.example.com/?ssl=true&replicaSet=myReplicaSet&authSource=admin'
);

或者,可以在构造函数的 $uriOptions 参数中指定身份验证凭据和 URI 参数。

<?php
$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\BSONDocumentMongoDB\Model\BSONArray 对象。以下示例演示了如何让库将所有内容反序列化为 PHP 数组,就像在旧的 mongo 扩展中做的那样。

<?php
$client = new MongoDB\Client(
null,
[],
[
'typeMap' => [
'root' => 'array',
'document' => 'array',
'array' => 'array',
],
]
);

返回

MongoDB\Client