Docs 菜单
Docs 主页
/ / /
PHP 库手册
/ /

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中指定的选项优先于$uristring 中存在的任何类似选项,并且不需要根据 RFC3986 进行编码 。

请参阅 MongoDB\Driver\Manager::__construct() 扩展文档以获取支持的选项列表。

$driverOptions : array

指定特定于 PHP 驱动程序的选项。 除了 扩展 支持的驱动程序选项 ,该库还支持指定默认 类型映射 应用于它创建的游标。

名称
类型
说明

autoEncryption

阵列

在驱动程序中配置客户端字段级加密的选项。 请参阅 扩展文档 了解支持的加密选项列表。

MongoDB\Client如果为keyVaultClient 选项提供了 { },它将解包到 MongoDB\Driver\Manager 对于扩展名。

1.6 版本中的新增功能

驱动

阵列

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

[
'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 实例时将相应的连接字符串作为第一个参数传递:

<?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