特征 ModelAwareTrait
提供将表格类和其他资源加载到宿主对象属性的功能。
该特征的示例用户包括 {@link \Cake\Controller\Controller} 和 {@link \Cake\Command\Command}。
属性摘要
-
$_modelFactories protected
array<callableCake\Datasource\Locator\LocatorInterface>
覆盖的模型工厂函数列表。
-
$_modelType protected
string
要使用的模型类型。
-
$modelClass protected
string|null
此对象的模型类名称。应该是复数形式。CakePHP 不会对名称进行词形变化。
方法摘要
-
_setModelClass() protected
根据约定设置 modelClass 属性。
-
fetchModel() public
从定位器中获取或构建模型实例。
-
getModelType() public
获取此类要使用的模型类型
-
modelFactory() public
覆盖现有的可调用对象以生成给定类型的资源库。
-
setModelType() public
设置此类要使用的模型类型
方法详细说明
_setModelClass() ¶ protected
_setModelClass(string $name): void
根据约定设置 modelClass 属性。
如果属性已经设置,则不会被覆盖。
参数
-
string
$name 类名。
返回值
void
fetchModel() ¶ public
fetchModel(string|null $modelClass = null, string|null $modelType = null): Cake\Datasource\RepositoryInterface
从定位器中获取或构建模型实例。
使用基于 $modelType
的模型工厂来获取和构建一个 RepositoryInterface
并返回它。默认的 modelType
可以使用 setModelType()
定义。
与 loadModel()
不同,此方法 不会 设置对象属性。
如果资源库提供者没有返回对象,将抛出 MissingModelException。
参数
-
string|null
$modelClass optional 要加载的模型类名称。默认为 $this->modelClass。名称可以是别名,如
'Post'
,也可以是 FQCN,如App\Model\Table\PostsTable::class
。-
string|null
$modelType optional 要加载的资源库类型。默认为 getModelType() 值。
返回值
Cake\Datasource\RepositoryInterface
抛出
Cake\Datasource\Exception\MissingModelException
如果找不到模型类。
UnexpectedValueException
如果未提供 $modelClass 参数,并且 ModelAwareTrait::$modelClass 属性值为空。
modelFactory() ¶ public
modelFactory(string $type, Cake\Datasource\Locator\LocatorInterface|callable $factory): void
覆盖现有的可调用对象以生成给定类型的资源库。
参数
-
string
$type 工厂函数所属的资源库类型名称。
-
Cake\Datasource\Locator\LocatorInterface|callable
$factory 用于创建实例的工厂函数。
返回值
void
setModelType() ¶ public
setModelType(string $modelType): $this
设置此类要使用的模型类型
参数
-
string
$modelType 模型类型
返回值
$this
属性详细说明
$_modelFactories ¶ protected
覆盖的模型工厂函数列表。
类型
array<callableCake\Datasource\Locator\LocatorInterface>
$modelClass ¶ protected
此对象的模型类名称。应该是复数形式。CakePHP 不会对名称进行词形变化。
例如:对于名为 'Comments' 的对象,modelClass 将为 'Comments'。插件类应使用 Plugin.Comments
样式的名称来正确地从正确的插件加载模型。
使用空字符串表示不使用此对象的自动加载。空值会根据控制器名称自动检测。
类型
string|null