<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $Id$
define('HAS_ONE',1);
define('BELONGS_TO',2);
define('HAS_MANY',3);
define('MANY_TO_MANY',4);
/**
+------------------------------------------------------------------------------
* ThinkPHP Model模型类
* 实现了ORM和ActiveRecords模式
+------------------------------------------------------------------------------
* @category Think
* @package Think
* @subpackage Core
* @author liu21st <liu21st@gmail.com>
* @version $Id$
+------------------------------------------------------------------------------
*/
class Model extends Think
{
// 操作状态
const MODEL_INSERT = 1; // 插入模型数据
const MODEL_UPDATE = 2; // 更新模型数据
const MODEL_BOTH = 3; // 包含上面两种方式
const MUST_VALIDATE = 1;// 必须验证
const EXISTS_VAILIDATE = 0;// 表单存在字段则验证
const VALUE_VAILIDATE = 2;// 表单值不为空则验证
// 当前使用的扩展模型
private $_extModel = null;
// 当前数据库操作对象
protected $db = null;
// 主键名称
protected $pk = 'id';
// 数据表前缀
protected $tablePrefix = '';
// 数据表后缀
protected $tableSuffix = '';
// 模型名称
protected $name = '';
// 数据库名称
protected $dbName = '';
// 数据表名(不包含表前缀)
protected $tableName = '';
// 实际数据表名(包含表前缀)
protected $trueTableName ='';
// 最近错误信息
protected $error = '';
// 字段信息
protected $fields = array();
// 数据信息
protected $data = array();
// 查询表达式参数
protected $options = array();
protected $_validate = array(); // 自动验证定义
protected $_auto = array(); // 自动完成定义
protected $_map = array(); // 字段映射定义
// 是否自动检测数据表字段信息
protected $autoCheckFields = true;
/**
+----------------------------------------------------------
* 架构函数
* 取得DB类的实例对象 字段检查
+----------------------------------------------------------
* @param string $name 模型名称
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
*/
public function __construct($name='')
{
// 模型初始化
$this->_initialize();
// 获取模型名称
if(!empty($name)) {
$this->name = $name;
}elseif(empty($this->name)){
$this->name = $this->getModelName();
}
// 数据库初始化操作
// 获取数据库操作对象
// 当前模型有独立的数据库连接信息
$this->db = Db::getInstance(empty($this->connection)?'':$this->connection);
// 设置表前缀
$this->tablePrefix = $this->tablePrefix?$this->tablePrefix:C('DB_PREFIX');
$this->tableSuffix = $this->tableSuffix?$this->tableSuffix:C('DB_SUFFIX');
// 字段检测
if(!empty($this->name) && $this->autoCheckFields) $this->_checkTableInfo();
}
/**
+----------------------------------------------------------
* 自动检测数据表信息
+----------------------------------------------------------
* @access protected
+----------------------------------------------------------
* @return void
+----------------------------------------------------------
*/
protected function _checkTableInfo() {
// 如果不是Model类 自动记录数据表信息
// 只在第一次执行记录
if(empty($this->fields)) {
// 如果数据表字段没有定义则自动获取
if(C('DB_FIELDS_CACHE')) {
$this->fields = F('_fields/'.$this->name);
if(!$this->fields) $this->flush();
}else{
// 每次都会读取数据表信息
$this->flush();
}
}
}
/**
+----------------------------------------------------------
* 获取字段信息并缓存
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @return void
+----------------------------------------------------------
*/
public function flush() {
// 缓存不存在则查询数据表信息
$fields = $this->db->getFields($this->getTableName());
$this->fields = array_keys($fields);
$this->fields['_autoinc'] = false;
foreach ($fields as $key=>$val){
// 记录字段类型
$type[$key] = $val['type'];
if($val['primary']) {
$this->fields['_pk'] = $key;
if($val['autoinc']) $this->fields['_autoinc'] = true;
}
}
// 记录字段类型信息
if(C('DB_FIELDTYPE_CHECK')) $this->fields['_type'] = $type;
// 2008-3-7 增加缓存开关控制
if(C('DB_FIELDS_CACHE'))
// 永久缓存数据表信息
F('_fields/'.$this->name,$this->fields);
}
/**
+----------------------------------------------------------
* 动态切换扩展模型
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @param string $type 模型类型名称
* @param mixed $vars 要传入扩展模型的属性变量
+----------------------------------------------------------
* @return Model
+----------------------------------------------------------
*/
public function switchModel($type,$vars=array()) {
$class = ucwords(strtolower($type)).'Model';
if(!class_exists($class))
throw_exception($class.L('_MODEL_NOT_EXIST_'));
// 实例化扩展模型
$this->_extModel = new $class($this->name);
if(!empty($vars)) {
// 传入当前模型的属性到扩展模型
foreach ($vars as $var)
$this->_extModel->setProperty($var,$this->$var);
}
return $this->_extModel;
}
/**
+----------------------------------------------------------
* 设置数据对象的值
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @param string $name 名称
* @param mixed $value 值
+----------------------------------------------------------
* @return void
+----------------------------------------------------------
*/
public function __set($name,$value) {
// 设置数据对象属性
$this->data[$name] = $value;
}
/**
+----------------------------------------------------------
* 获取数据对象的值
+----------------------------------------------------------
* @access public
+-----------------------------------
没有合适的资源?快使用搜索试试~ 我知道了~
PHP实例开发源码-光线phpCMS影视系统(百度奇艺电影模板整站源码).zip
共645个文件
gif:231个
html:150个
php:144个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 59 浏览量
2022-11-22
11:17:29
上传
评论
收藏 1.47MB ZIP 举报
温馨提示
PHP实例开发源码—光线phpCMS影视系统(百度奇艺电影模板整站源码).zip PHP实例开发源码—光线phpCMS影视系统(百度奇艺电影模板整站源码).zip PHP实例开发源码—光线phpCMS影视系统(百度奇艺电影模板整站源码).zip
资源推荐
资源详情
资源评论
收起资源包目录
PHP实例开发源码-光线phpCMS影视系统(百度奇艺电影模板整站源码).zip (645个子文件)
all.css 38KB
style1.css 30KB
style.css 30KB
template.css 22KB
default.css 19KB
banner.css 6KB
admin_style.css 5KB
user.css 4KB
collect.css 4KB
dialog.css 3KB
admin_login.css 3KB
admin_top.css 3KB
simple.css 2KB
admin_left.css 2KB
system.css 1KB
admin_index.css 1KB
jquery_jqmodal.css 1KB
install.css 1KB
static.gif 35KB
img.gif 17KB
img.gif 17KB
35.gif 13KB
42.gif 13KB
40.gif 10KB
logo1.gif 9KB
2345.gif 9KB
logo.gif 8KB
18.gif 8KB
19.gif 8KB
11.gif 8KB
32.gif 7KB
nav_bg.gif 7KB
news_l_title.gif 7KB
logo.gif 6KB
49.gif 6KB
bg.gif 6KB
29.gif 6KB
97.gif 5KB
65.gif 5KB
31.gif 5KB
46.gif 5KB
57.gif 5KB
bnBg.gif 5KB
navBg.gif 5KB
45.gif 5KB
8.gif 5KB
admin_logo.gif 5KB
TJ.gif 4KB
43.gif 4KB
33.gif 4KB
headerBg.gif 4KB
68.gif 4KB
26.gif 4KB
14.gif 4KB
7.gif 4KB
51.gif 4KB
10.gif 4KB
47.gif 4KB
72.gif 4KB
nav_li_right.gif 3KB
6.gif 3KB
total_bg.gif 3KB
94.gif 3KB
84.gif 3KB
41.gif 3KB
17.gif 3KB
allLogo.gif 3KB
9.gif 3KB
28.gif 3KB
allLogo1.gif 3KB
ajax-loader.gif 3KB
bdhd_player_left.gif 3KB
50.gif 3KB
95.gif 3KB
22.gif 3KB
27.gif 3KB
67.gif 3KB
90.gif 3KB
60.gif 3KB
loading.gif 3KB
58.gif 3KB
login_input_hr.gif 2KB
up.gif 2KB
74.gif 2KB
nav_li_home.gif 2KB
25.gif 2KB
101.gif 2KB
news_btn.gif 2KB
play.gif 2KB
54.gif 2KB
query_bg.gif 2KB
99.gif 2KB
24.gif 2KB
12.gif 2KB
personal2.gif 2KB
73.gif 2KB
login.gif 2KB
104.gif 2KB
103.gif 2KB
34.gif 2KB
共 645 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
毕业_设计
- 粉丝: 1921
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功