特征 ModelAwareTrait
提供将表格类和其他资源加载到宿主对象属性的功能。
该特征的示例用户包括 {@link \Cake\Controller\Controller} 和 {@link \Cake\Command\Command}。
属性摘要
- 
        $_modelFactories protectedarray<callableCake\Datasource\Locator\LocatorInterface>覆盖的模型工厂函数列表。 
- 
        $_modelType protectedstring要使用的模型类型。 
- 
        $modelClass protectedstring|null此对象的模型类名称。应该是复数形式。CakePHP 不会对名称进行词形变化。 
方法摘要
- 
          _setModelClass() protected根据约定设置 modelClass 属性。 
- 
          fetchModel() public从定位器中获取或构建模型实例。 
- 
          getModelType() public获取此类要使用的模型类型 
- 
          modelFactory() public覆盖现有的可调用对象以生成给定类型的资源库。 
- 
          setModelType() public设置此类要使用的模型类型 
方法详细说明
_setModelClass() ¶ protected
_setModelClass(string $name): void根据约定设置 modelClass 属性。
如果属性已经设置,则不会被覆盖。
参数
- 
                string$name
- 类名。 
返回值
voidfetchModel() ¶ 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
- 用于创建实例的工厂函数。 
返回值
voidsetModelType() ¶ 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