类 ConnectionManager
管理和加载 Connection 实例
提供加载和创建连接对象的接口。充当应用程序中定义的连接的注册表。
提供加载和枚举在 config/app.php 中定义的连接的接口。
属性摘要
-
$_aliasMap protected static
array<string, string>
连接别名的映射。
-
$_config protected static
array<string|int, array<string, mixed>>
配置集。
-
$_dsnClassMap protected static
array<string, string>
一个将 url 方案映射到完整限定驱动程序类名的数组
-
$_registry protected static
Cake\Datasource\ConnectionRegistry
管理器使用的 ConnectionRegistry。
方法摘要
-
alias() public static
设置一个或多个连接别名。
-
aliases() public static
返回当前连接别名及其别名。
-
configured() public static
返回包含命名配置的数组。
-
drop() public static
删除构建的适配器。
-
dropAlias() public static
删除别名。
-
get() public static
获取连接。
-
getConfig() public static
读取现有配置。
-
getConfigOrFail() public static
读取特定键的现有配置。
-
getDsnClassMap() public static
返回此类的 DSN 类映射。
-
parseDsn() public static
将 DSN 解析为有效的连接配置。
-
setConfig() public static
配置新的连接对象。
-
setDsnClassMap() public static
更新此类的 DSN 类映射。
方法详情
alias() ¶ public static
alias(string $source, string $alias): void
设置一个或多个连接别名。
连接别名允许您重命名活动连接,而不会覆盖别名连接。这在测试套件中最为有用,用于将连接替换为其测试变体。
定义的别名将优先于普通连接名称。例如,如果您将“default”别名为“test”,那么只要别名定义,获取“default”将始终返回“test”连接。
您可以使用 ConnectionManager::dropAlias() 删除别名。
用法
// Make 'things' resolve to 'test_things' connection
ConnectionManager::alias('test_things', 'things');
参数
-
string
$source 要别名的现有连接。
-
string
$alias 解析为
$source
的别名。
返回
void
drop() ¶ public static
drop(string $config): bool
删除构建的适配器。
如果您希望修改现有配置,则应将其删除,更改配置,然后重新添加。
如果实现的对象支持 $_registry
对象,那么命名配置也将从注册表中卸载。
参数
-
string
$config 您希望删除的现有配置。
返回
bool
dropAlias() ¶ public static
dropAlias(string $alias): void
删除别名。
从 ConnectionManager 中删除别名。如果没有任何其他名称相同的连接,则获取别名连接可能会失败。
参数
-
string
$alias 要删除的连接别名
返回
void
get() ¶ public static
get(string $name, bool $useAliases = true): Cake\Datasource\ConnectionInterface
获取连接。
如果连接尚未构建,则将向注册表添加实例。此方法将使用已定义的任何别名。如果您想要原始未别名连接,请将 false
作为第二个参数传递。
参数
-
string
$name 连接名称。
-
bool
$useAliases optional 是否使用连接别名
返回
Cake\Datasource\ConnectionInterface
抛出
Cake\Datasource\Exception\MissingDatasourceConfigException
当配置数据丢失时。
getConfig() ¶ public static
getConfig(string $key): mixed|null
读取现有配置。
参数
-
string
$key 配置的名称。
返回
mixed|null
getConfigOrFail() ¶ public static
getConfigOrFail(string $key): mixed
读取特定键的现有配置。
此键的配置值必须存在,它永远不能为 null。
参数
-
string
$key 配置的名称。
返回
mixed
抛出
InvalidArgumentException
如果值不存在。
getDsnClassMap() ¶ public static
getDsnClassMap(): array<string, class-string>
返回此类的 DSN 类映射。
返回
array<string, class-string>
parseDsn() ¶ public static
parseDsn(string $dsn): array<string, mixed>
将 DSN 解析为有效的连接配置。
此方法允许使用与 PEAR::DB 使用的格式类似的格式设置 DSN。以下是其用法的示例
$dsn = 'mysql://user:pass@localhost/database';
$config = ConnectionManager::parseDsn($dsn);
$dsn = 'Cake\Database\Driver\Mysql://127.0.0.1:3306/database?className=Cake\Database\Connection';
$config = ConnectionManager::parseDsn($dsn);
$dsn = 'Cake\Database\Connection://127.0.0.1:3306/database?driver=Cake\Database\Driver\Mysql';
$config = ConnectionManager::parseDsn($dsn);
对于所有类,scheme
的值都设置为 className
和 driver
的值,除非它们已另行指定。
请注意,查询字符串参数也会被解析并设置为返回配置中的值。
参数
-
string
$dsn 要转换为配置数组的 DSN 字符串
返回
array<string, mixed>
setConfig() ¶ public static
setConfig(array<string, mixed>|string $key, Cake\Datasource\ConnectionInterfaceClosure|array<string, mixed>|null $config = null): void
配置新的连接对象。
连接将在首次使用时才会建立。
参数
-
array<string, mixed>|string
$key 连接配置的名称,或多个配置的数组。
-
Cake\Datasource\ConnectionInterfaceClosure|array<string, mixed>|null
$config 可选 用于适配器的名称 => 配置数据的数组。
返回
void
抛出
Cake\Core\Exception\CakeException
尝试修改现有配置时。
另请参阅
setDsnClassMap() ¶ 公共 静态
setDsnClassMap(array<string, string> $map): void
更新此类的 DSN 类映射。
参数
-
array<string, string>
$map 要应用的类映射的添加/编辑。
返回
void