4.1 模型简介
模型也是一种类文件,模型类文件的特点如下:
1. 文件位于/application/model目录下;
2. 每个模型类文件中只有一个类,类名与文件名相同,如User模型的类名为User,类文件名为User.php;
3. 模型类可以继承框架的模型基类(HModel)或者模型基类的子类,从而可以享受到模型基类提供的方法,比如数据库操作和数据验证等,如果继承了模型基类,则自定义模型类需要满足下面4、5两点要求,如果没有继承,则忽略下面4、5的要求;
4. 每个模型类中,如果继承了框架的模型基类(类名为
HModel,位于 framework/
HModel.php)必须要有个公共的setTable方法,此方法要返回主要操作的数据表的表名,如果不需要操作数据表,可以返回空字符串:
public function setTable(){
return 'table_name';
}
注:如果在配置文件中配置了统一的表前缀,只需要返回非前缀的部分,同时用花括号包围,如:
public function setTable(){
return '{table_name}';
}
5. 如果在自定义模型中定义了构造函数,并且自定义的模型类继承了框架的模型基类,那么在自定义的模型类的构造函数中,需要调用框架模型基类的构造行数;
注:框架的模型基类默认的表的主键的字段名为“id”,如果您的表的主键的字段名不是''id",则需要您手动指定表的主键,详情见下面关于数据库操作的章节。
自定义模型类的写法如下,以User.php为例:
<?php
/**
* 模型演示
* 此类继承自框架的模型基类:HModel(位于 framework/HModel.php)
* 框架的模型基类主要实现了数据库的快速读写
* 继承不是必须的
*/
class User extends HModel{
/**
* 模型类的构造函数一般不需要编写,此处仅为演示
* 如果您因业务需要,编写了模型类的构造函数,则需要显示调用框架类的构造函数
* @return string 默认操作的表名
*/
function __construct(){
/**
* 此处为您的业务逻辑
* ..................
*/
//显示调用HModel类的构造函数
parent::__construct();
}
/**
* 设置 默认操作的数据表 HModel类需要重写此方法
* @return string 默认操作的表名
*/
protected function setTable(){
return '{user}';//假设数据表为user {}的作用是根据配置自动添加数据表前缀
}
/**
* 自定义方法演示
*/
public function getUsername(){
return 'user1';
}
}
阅读:2717 |
发布时间:2018-12-29 15:06