首页 > 开发 > Php > 正文

PHP的Yii框架中Model模型的学习教程

2020-02-21 20:50:15
字体:
来源:转载
供稿:网友

模型是 MVC 模式中的一部分, 是代表业务数据、规则和逻辑的对象。

模型是 CModel 或其子类的实例。模型用于保持数据以及与其相关的业务逻辑。

模型是单独的数据对象。它可以是数据表中的一行,或者一个用户输入的表单。 数据对象的每个字段对应模型中的一个属性。每个属性有一个标签(label), 并且可以通过一系列规则进行验证。

Yii 实现了两种类型的模型:表单模型和 Active Record。二者均继承于相同的基类 CModel。

表单模型是 CFormModel 的实例。表单模型用于保持从用户的输入获取的数据。 这些数据经常被获取,使用,然后丢弃。例如,在一个登录页面中, 我们可以使用表单模型用于表示由最终用户提供的用户名和密码信息。

Active Record (AR) 是一种用于通过面向对象的风格抽象化数据库访问的设计模式。 每个 AR 对象是一个 CActiveRecord 或其子类的实例。代表数据表中的一行。 行中的字段对应 AR 对象中的属性。

可通过继承 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 public非静态公有 成员变量都是属性。 例如,下述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()使属性像普通对象属性被访问。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表