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.
驱动程序数组要传递给服务器握手的附加驱动程序元数据。这是一个包含
name
、version
和platform
字符串字段的数组。例如[ '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
实例时,将相应的连接字符串作为第一个参数传递
$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', ], ] );
参见
在MongoDB手册中的连接字符串URI格式
服务器发现与监控规范