phpcms v9二次开发之数据模型类
系统模型类:model.class.php
数据模型类的位置:/phpcms/libs/classes
phpcms v9二次开发中,我们要经常需要对模块的数据表进行查询、添加、修改和删除数据等操作,所有这些操作都离不开数据模型类model.class.php,它起到开发者与数据表的交互作用。model.class.php里面封装了许多数据表操作的方法,基本上常用的mysql操作语句都能从中找到,但是它又和原生态的mysql语句有所不同,和其它php内容管理系统一样,phpcms也对原生态的mysql语句进行封装简化,以使它操作起更加方便,为开发者省去了不少麻烦。具体我们来看一下model.class.php代码片断:
<?php
defined('in_phpcms') or exit('no permission resources.');
pc_base::load_sys_class('model', '', 0);//加载加载系统模型类model.class.php
class football_model extends model {//球队模型类football_model.class.php继承系统模型类model.class.php
public $table_name;//声明一个数据表变量
public function __construct() {//初始化球队模型类的构造函数
$this->db_config = pc_base::load_config('database');//加载数据库配置文件database.php
$this->db_setting = 'default';//为数据库配置文件中配置数据库链接池名称,默认为default
$this->table_name = 'fbteam';//'fbteam'为球队数据表的名称
parent::__construct();//调用父类model.class.php的构造函数,以获取父类的属性方法
}
}
?>
如上面的 select语,和mysql的select()有所不同,只要传入相关参数就可以实现mysql要用很多语句才能实现的功能。更多请看model.class.php。
模块模型类:数据表名称+'_model.class.php'
模块模型类的位置:phpcms/model/
在调用model.class.php里面的方法时,需要先把它实例化。每个模型对应一张数据表,每张数据表对应一个模块模型类。现在我们来建一个球队的模块模型表'fbteam',那么它对应的模型类为football_model.class.php,完整代码如下:
<?php
pc_base::load_sys_class('db_factory', '', 0);
class model { ... public function __construct() {
if (!isset($this->db_config[$this->db_setting])) {
$this->db_setting = 'default';
}
$this->table_name = $this->db_config[$this->db_setting]['tablepre'].$this->table_name;
$this->db_tablepre = $this->db_config[$this->db_setting]['tablepre'];
$this->db = db_factory::get_instance($this->db_config)->get_database($this->db_setting);
} /**
* 执行sql查询
* @param $where 查询条件[例`name`='$name']
* @param $data 需要查询的字段值[例`name`,`gender`,`birthday`]
* @param $limit 返回结果范围[例:10或10,10 默认为空]
* @param $order 排序方式 [默认按数据库默认方式排序]
* @param $group 分组方式 [默认为空]
* @param $key 返回数组按键名排序
* <a class="referer" href="http://my.oschina.net/u/556800" target=_blank>@return</a> array 查询结果集数组
*/
final public function select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='') {
if (is_array($where)) $where = $this->sqls($where);
return $this->db->select($data, $this->table_name, $where, $limit, $order, $group, $key);
}
...
}
这样我们就建立好了一个球队模块的数据模型类。
phpcms v9二次开发之数据模型类的更多相关文章
- phpcms v9二次开发之模型类的应用(1)
在<phpcms二次开发之模型类model.class.php>中讲到了模型类的建立方法,接下来我讲一下模型类的应用. 前段时间我基于phpcms v9开发了一个足球网.足球网是 ...
- phpcms v9二次开发之模型类的应用(2)
二.模型操作方法select()--查询语句 //查询级别管理列表信息 public function levellists() { $lelists = $this->l ...
- PHPCMS V9二次开发便捷自定义后台入口文件夹
phpcms v9二次开发便捷自定义后台入口文件夹 最新发布的phpcms v9由于采用了mvc的设计模式,所以它的后台访问地址是固定的,虽然可以通过修改路由配置文件来实现修改,但每次都修改路由配置文 ...
- phpcms v9二次开发笔记
phpcms是基于MVC结构的. 安装: 下载phpcms_v9.5.9_UTF8.zip:新建目录phpcms,将压缩包里install_package目录下所有文件复制到phpcms目录.浏览器输 ...
- phpcms V9 二次开发------(获取点击数详解)
关于phpcms V9的点击数的使用应该有不少数是直接调用网上搜索到的代码,但是对于一些想要深入研究开发的人来说,看到网上的代码后更是不解,本人这几天看了看,了解了一些东西,在这里写出来分享一下,首先 ...
- PHPCMS V9二次开发]自定义字段模型-文本组
phpcms v9,我们在做类似于酒店房型等类型的时候,需要用到文本组字段模型,但phpcms并未提供该模型.如下图所示效果: 展示效果如下: 步骤/方法 打开phpcms\modules\conte ...
- PHPCMS v9 二次开发_验证码结合Session开发
本文主要讲解了在V9中使用v9自带验证码并且需要使用session的情况下,多种问题的解决.:).如有问题或者更好的解决办法,希望不吝赐教. 1.前端调用验证码 pc_base::load_sys_c ...
- phpcms v9 二次开发 - 自己添加源文件
一.在根目录添加入口文件, 我现在要在根目录添加一个文件名为test.php 这样一个文件,为了调用系统的公用类和函数,必须加入一下包含文件 test.php代码如下 <?phpdefine(' ...
- PHPCMS V9 二次开发常用代码集
0:调用最新文章,带所在版块 {pc:get sql="SELECT a.title, a.catid, b.catid, b.catname, a.url as turl ,b.url a ...
随机推荐
- Putty工具包简单使用
Putty工具包简单使用 一.Putty简介 Putty是一款远程登录工具,用它可以非常方便的登录到Linux服务器上进行各种操作(命令行方式).Putty完全免费,而且无需安装(双击即可运行),支持 ...
- 【转】android蓝牙开发---与蓝牙模块进行通信--不错
原文网址:http://www.cnblogs.com/wenjiang/p/3200138.html 近半个月来一直在搞android蓝牙这方面,主要是项目需要与蓝牙模块进行通信.开头的进展很顺利, ...
- 飘窗代码修改了一段js
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Post/Redirect/Get pattern | PRG 模式
Post/Redirect/Get 是一种 web 开发设计模式,用于防止表单的重复提交. 默认情况,提交 Post 请求到服务器后,如果直接刷新浏览器,会重新在提交一次 Post 请求.在访问电商网 ...
- NEXT | 不错过任何一个新产品
NEXT | 不错过任何一个新产品 NEXT 不错过任何一个新产品
- HTTP学习笔记4-请求与响应结构例子
18,HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成.请求消息和响应消息都是由开始行,消息报头(可选的),空行(只有CRLF的行),消息正文(可选的)组成. 19,对于请求消息,开始行就 ...
- sql server 扩展存储过程
C# 代码 using Microsoft.SqlServer.Server; using System; using System.Collections.Generic; using System ...
- iOS 设备和外部配件的通讯
首先,如果我们的应用程序想跟外设传输数据,先要透过iphone的操作系统,也就是iphoneOS,而最开始的认证过程也是在外设和iphoneOS之间发生的,苹果为这个过程提供了一颗认证芯片(这颗芯片的 ...
- SKNode类
继承自 UIResponder:NSObject 符合 NSCodingNSCopyingNSObject(NSObject) 框架 /System/Library/Frameworks/Sprit ...
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡【转】
CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2 ...