ShopCMS 开发文档
HFramework 开发文档

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