第七章 模型(Models).pdfVIP

  • 2
  • 0
  • 约1.01万字
  • 约 10页
  • 2017-06-18 发布于湖北
  • 举报
模型 (Models) 模型 模型是 MVC 模式中的⼀部分, 是代表业务数据、规则和逻辑的对象。 可通过继承 yii\base\Model 或 的⼦类定义模型类,基类yii\base\Model⽀持许多实⽤ 的特性: 属性: 代表可像普通类属性或数组⼀样被访问的业务数据; 属性标签: 指定属性显⽰出来的标签; 块赋值: ⽀持⼀步给许多属性赋值; 验证规则: 确保输⼊数据符合所申明的验证规则; 数据导出: 允许模型数据导出为⾃定义格式的数组。 Model 类也是更多⾼级模型如Active Record 活动记录的基类, 更多关于这些⾼级模 型的详情请参考相关⼿册。 补充:模型并不强制⼀定要继承yii\base\Model ,但是由于很多组件⽀持 yii\base\Model ,最好使⽤ 做为模型基类。 属性 模型通过 属性 来代表业务数据,每个属性像是模型的公有可访问属性, yii\base\Model::attributes() 指定模型所拥有的属性。 可像访问⼀个对象属性⼀样访问模型的属性: $model = new \app\models\ContactForm; // name 是ContactForm模型的属性 $model-name = example; echo $model-name; 也可像访问数组单元项⼀样访问属性,这要感谢yii\base\Model⽀持 ArrayAccess 数组 访问 和 ArrayIterator 数组迭代器: $model = new \app\models\ContactForm; // 像访问数组单元项⼀样访问属性 $model[name] = example; echo $model[name]; // 迭代器遍历模型 foreach $model as $name = $value) { echo $name: $value\n; } 定义属性 默认情况下你的模型类直接从yii\base\Model继承,所有 non-static p ublic⾮静态公有 成 员变量都是属性。 例如,下述ContactForm模型类有四个属 性name, email, subject and body, ContactForm 模型⽤来代表从HTML表单获 取的输⼊数据。 namespace app\models; use yii\base\Model; class ContactForm extends Model { public $name; public $email; public $subject; public $body; } 另⼀种⽅式是可覆盖 yii\base\Model::attributes() 来定义属性,该⽅法返回模型的属性 名。 例如 yii\db\ActiveRecord 返回对应数据表列名作为 的属性名, 注意可能需要覆 盖魔术⽅法如__get ), __set )使属性像普通对象属性被访问。 属性标签 当属性显⽰或获取输⼊时,经常要显⽰属性相关标签,例如假定⼀个属性名 为firstName, 在某些地⽅如表单输⼊或错误信息处,你可能想显⽰对终端⽤户来 说更友好的 First Name 标签。 可以调⽤ yii\base\Model:: etAttributeLabel() 获取属性的标签,例如: $model = new \app\models\ContactForm; // 显示为 Name echo $model-getAttributeLabel name); 默认情况下,属性标签通过yii\base\Model:: enerateAttributeLabel()⽅法⾃动从属性名 ⽣成. 会⾃动将驼峰式⼤⼩写变量名转换为多个⾸字母⼤写的单词,例 如 username 转换为 Username, firstName 转换为 First Name。 如果你不想⽤⾃动⽣成的标签,可以覆盖 yii\base\Model::attributeLabels() ⽅法明确指 定属性标签,例如: namespace app\models; use yii\base\Model; class ContactForm extends Model { public $name; public $email;

文档评论(0)

1亿VIP精品文档

相关文档