类 TableLocator
提供 Table 对象的默认注册表/工厂。
属性概要
-
$_config protected
array<string, array|null>
别名的配置。
-
$_fallbacked protected
arrayCake\ORM\Table>
包含根据内置 Table 类创建的 Table 对象列表。该列表以表别名作为索引。
-
$allowFallbackClass protected
bool
如果找不到表类,是否应使用回退类。
-
$fallbackClassName protected
string
要使用的回退类。
-
$instances protected
array<string,Cake\ORM\Table>
属于注册表的实例。
-
$locations protected
list<string>
包含应该查找表类的位置列表。
-
$options protected
array<string, array>
包含传递给 get() 方法的选项列表。
-
$queryFactory protected
QueryFactory
方法概要
-
__construct() public
构造函数。
-
_create() protected
用于创建表实例的包装器。
-
_getClassName() protected
获取表类名称。
-
addLocation() public
添加应该查找表类的位置。
-
allowFallbackClass() public
设置是否应使用回退类。
-
clear() public
清除注册表中的配置和实例。
-
createInstance() protected
创建给定类名的实例。
-
exists() public
检查注册表中是否存在实例。
-
genericInstances() public
返回由此注册表创建的表列表,这些表无法从特定子类实例化。此方法对于调试设置关联或创建新表类时的常见错误很有用。
-
get() public
从注册表中获取表实例。
-
getConfig() public
返回别名的配置或所有别名的完整配置数组。
-
remove() public
从注册表中删除存储库实例。
-
set() public
设置 Table 实例。
-
setConfig() public
存储在用匹配别名实例化对象时要使用的选项列表。
-
setFallbackClassName() public
设置回退类名称。
方法详情
__construct() ¶ public
__construct(list<string>|null $locations = null, ?QueryFactory $queryFactory = null)
构造函数。
参数
-
list<string>|null
$locations 可选 应该查找表的位置。如果没有提供,则使用应用程序命名空间下的默认
Model\Table
。-
?QueryFactory
$queryFactory 可选
_create() ¶ protected
_create(array<string, mixed> $options): Cake\ORM\Table
用于创建表实例的包装器。
参数
-
array<string, mixed>
$options 要检查的别名。
返回
Cake\ORM\Table
_getClassName() ¶ protected
_getClassName(string $alias, array<string, mixed> $options = []): string|null
获取表类名称。
参数
-
string
$alias 您要获取的别名。应采用驼峰命名法。
-
array<string, mixed>
$options 可选 表选项数组。
返回
string|null
addLocation() ¶ public
addLocation(string $location): $this
添加应该查找表类的位置。
参数
-
string
$location 要添加的位置。
返回
$this
allowFallbackClass() ¶ public
allowFallbackClass(bool $allow): $this
设置是否应使用回退类。
控制如果在 get()
中使用的别名无法找到具体的类,是否应使用回退类来创建表实例。
参数
-
bool
$allow 启用或禁用回退的标志。
返回
$this
createInstance() ¶ protected
createInstance(string $alias, array<string, mixed> $options): Table
创建给定类名的实例。
参数
-
string
$alias -
array<string, mixed>
$options
返回
Table
genericInstances() ¶ public
genericInstances(): arrayCake\ORM\Table>
返回由此注册表创建的表列表,这些表无法从特定子类实例化。此方法对于调试设置关联或创建新表类时的常见错误很有用。
返回
arrayCake\ORM\Table>
get() ¶ public
get(string $alias, array<string, mixed> $options = []): Cake\ORM\Table
从注册表中获取表实例。
表仅创建一次,直到注册表被刷新。这意味着别名在您的应用程序中必须是唯一的。这很重要,因为表关联在运行时解析,并且需要正确处理循环引用。
可以传递的选项与 {@link \Cake\ORM\Table::__construct()} 中的相同,但也会识别 className
键。
选项
className
定义要使用的特定类名。如果未定义,CakePHP 将根据别名生成类名。例如,“用户” 将导致使用App\Model\Table\UsersTable
。如果此类不存在,则将使用默认的Cake\ORM\Table
类。通过设置className
选项,您可以定义要使用的特定类。className 选项支持插件简短类引用 {@link \Cake\Core\App::shortName()}。table
定义要使用的表名。如果未定义,此选项将默认设置为别名名称的下划线版本。connection
注入要使用的特定连接对象。如果此选项和connectionName
未定义,则将调用表类的defaultConnectionName()
方法来获取连接名称。connectionName
定义要使用的连接名称。命名连接将从 {@link \Cake\Datasource\ConnectionManager} 中获取。
注意 如果您的 $alias
使用插件语法,则只有名称部分将用作注册表中的键。这意味着,如果两个插件或插件和应用程序提供相同的别名,注册表将只存储第一个实例。
参数
-
string
$alias 您要获取的别名。应采用驼峰命名法。
-
array<string, mixed>
$options 可选 您要用来构建表的选项。如果表已加载,则选项将被忽略。
返回
Cake\ORM\Table
抛出
RuntimeException
当您尝试配置已存在的别名时。
getConfig() ¶ public
getConfig(string|null $alias = null): array
返回别名的配置或所有别名的完整配置数组。
参数
-
string|null
$alias 可选
返回
数组
set() ¶ public
set(string $alias, Cake\Datasource\RepositoryInterface $repository): Cake\ORM\Table
设置 Table 实例。
参数
-
string
$alias 要设置的别名。
-
Cake\Datasource\RepositoryInterface
$repository 要设置的表格。
返回
Cake\ORM\Table
setConfig() ¶ public
setConfig(array<string, mixed>|string $alias, array<string, mixed>|null $options = null): $this
存储在用匹配别名实例化对象时要使用的选项列表。
参数
-
array<string, mixed>|string
$alias -
array<string, mixed>|null
$options 可选
返回
$this
setFallbackClassName() ¶ public
setFallbackClassName(string $className): $this
设置回退类名称。
如果在 get()
中使用的别名找不到具体类,则应使用该类来创建表格实例。默认值为 Cake\ORM\Table
。
参数
-
string
$className 回退类名
返回
$this