如何在php中使用实体类的概念
php 是弱类型语言,通常情况下,是不去定义变量类型的。但是如果是JAVA或者.NET的开发人员转做PHP会不适应。或者是自己想自己写一个类似于 hibernate的orm框架的时候,没有实体类的概念,就不那么好控制了,那么简单讲下,怎么在php中实现实体类的概念。
首先建一个基本Model类
<?php
class BaseModel{private $_tableName;public function __construct($tableName=""){$this->_tableName=$tableName;}public function getTableName(){return $this->_tableName;}public function getFieldsArray(){try { $obj=json_decode(json_encode($this),true); //此处可能会影响效率,但是为了去除类中的private属性,目前是这么做的$fieldsArray=array();foreach ($obj as $k=>$v){$fieldsArray[]=$k;}return $fieldsArray;} catch (Exception $e) {throw new Exception($e,3, $previous);}}public function find($condition=null){try {$sql="select ".implode(",",$this->getFieldsArray())." from ".$this->_tableName." ";if($condition){$sql.=" where ".$condition;}else {$obj=json_decode(json_encode($this),true);$fieldsArray=array();foreach ($obj as $k=>$v){if($v!=null && $v!=""){$fieldsArray[]=$k."='".$v."'";}}if(count($fieldsArray)>0){$sql.=" where ".implode(" and ", $fieldsArray);}}return $sql; } catch (Exception $e) {throw new Exception($e,3, $previous);}}
}
?>
下面来建一个对应数据库中表的将在项目中使用的类
<?php
class MemberModel extends BaseModel{public $m_ID;public $m_Account;public $m_Pwd;public $m_TEL;public $m_UserID;public $m_ChannelID;public $m_Status;public $m_CreateTime;public $m_UpdateTime;}
?>
下面就是实体类如何去使用的了
首次看controller
public function actionSelectMember(){try {$member=new MemberModel("T_Member");$member->m_Account=GetValue::getParam("Account");$member->m_Pwd=GetValue::getParam("Pwd");$result=MemberService::selectMember($member);if($result){Yii::app()->session["MemberID"]=$result["m_ID"];echo IMReturnStr::success();}else {echo IMReturnStr::GetInfo(false,"用户名或者密码错误");}} catch (Exception $e) {echo IMReturnStr::failure();}}
service
public static function selectMember(MemberModel $member){try {return MemberDao::selectMember($member);} catch (Exception $e) {throw new Exception($e,4);}}
dao
public static function selectMember(MemberModel $member){ //这里就是为什么要写类型了,写了类型可以拿到定义的类中的方法,否则虽然也可以直接写,但是没有自动提示,如果用的方法比较多,就很蛋疼了。try {$sql=$member->find();return YIISqlOper::queryRow($sql);} catch (Exception $e) {throw new Exception($e,4);}}
如何在php中使用实体类的概念相关推荐
- 浅谈三层架构中的实体类(C#)
最近因为三层架构中的实体类,引发了不少小问题,下面列举一下,谈谈自己的感想. 本文所指的实体类仅限于三层中的实体类,即数据库表的映射. 一.为什么要用实体类? | 使程序简洁易懂,便于维护. | ...
- netbeans连接数据库_NetBeans Java EE技巧#1 –数据库中的实体类
netbeans连接数据库 NetBeans IDE是开发各种应用程序的绝佳选择. 具体来说,我每天都使用它来开发和维护Java EE应用程序. 在过去的几个发行版中,不仅Java EE的生产力提高了 ...
- NetBeans Java EE技巧#1 –数据库中的实体类
NetBeans IDE是开发各种应用程序的绝佳选择. 具体来说,我每天都使用它来开发和维护Java EE应用程序. 在过去的几个发行版中,不仅Java EE的生产力提高了,而且NetBeans ID ...
- java list 分组_Java 将List中的实体类按照某个字段进行分组并存
1.JDK1.8之前: 假设有实体类User,里面有字段id,我们将相同id的User进行分组,并存放在Map中.(例子不是很恰当,但很能说明问题) public static void main(S ...
- android java 实体类 object变量 保存_Java中的实体类--Serializable接口、transient 关键字...
在java中,实体类是一个非常重要的概念,我们可以在实体类中封装对象.设置其属性和方法等.关于实体类,也经常涉及到适配器模式.装饰者模式等设计模式.那么在实际代码开发中,关于实体类的注意事项有哪些呢? ...
- 自定义tt文本模板实现MySql指数据库中生成实体类
自定义tt文本模板实现MySql指数据库中生成实体类 1.在项目中依次点击"添加"/"新建项",选择"文本模板",输入名称后点击添加. 2. ...
- java中遍历实体类,获取属性名和属性值
方式一(实体类): //java中遍历实体类,获取属性名和属性值public static void testReflect(Object model) throws Exception{for (F ...
- Java中的实体类(VO、PO、DO、DTO、BO、QO、DAO、POJO)
Java中的实体类(VO.PO.DO.DTO.BO.QO.DAO.POJO) PO(persistant object) 持久对象 DO(Domain Object)领域对象 TO(Transfer ...
- java将map根据key分组_Java将List中的实体类按照某个字段进行分组并存放至Map中操作代码...
本篇文章小编给大家分享一下Java将List中的实体类按照某个字段进行分组并存放至Map中操作代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1. ...
最新文章
- 笔记本电脑处理器_英特尔发布第九代酷睿移动处理器:笔记本电脑进入8核5.0GHz时代!...
- 你是信用卡卡奴吗?怎么摆脱卡奴?
- javascript 分时函数 分批次添加DOM节点 timeChunk
- 【OpenCV 例程200篇】78. 频率域图像滤波基础
- /etc/passwd文件+/etc/shadow文件(图解+字段详解)
- java不等长二维数组_Java中关于二维数组的理解与使用
- Docker用Portainer将Solr集群添加入Repository
- 手机调用ArcGIS Server发布的Rest地图服务不显示问题
- 测试项目的makefile
- 全球及中国树脂晶圆切割刀片行业需求状况及竞争前景分析报告2021-2027年
- 鼠标模拟器,减轻你的重复操作!
- 一个静态路由配置实例(eNSP)
- 企业IP地址怎么划分
- Python项目实战化:爬取堆糖网研究所美好生活照
- Python OpenCV 写入视频
- Github 之 本地上传代码到 Github ,并且添加 .gitignore 文件 屏蔽一些文件上传(内附详细步骤)
- gtx1070显卡 linux,Ubuntu 16.04下Nvidia 显卡驱动安装
- 计算机专业打字有没有要求,计算机专业学生有必要专门花时间练习打字吗?
- 小辣椒安卓机器人无命令_小辣椒 GM-Q5+手机怎么双清?_安卓手机双清刷机图解说明...
- 新研究发现:太平洋上仅存的冰川将很快融化
热门文章
- 1-1 结构化数据建模流程范例
- 亚信科技新“三驾马车”再创佳绩,与数字经济同频共振
- scrt如何切换成英文版_SecureCRT 简介,中英文对照
- styl类型文件css,Stylus: 让你更简洁的完成css
- 机器学习_3.神经网络之CNN
- flutter 微信语音输入
- Music Theory for Songwriters: Rhythm 歌曲作者的音乐理论:节奏 Lynda课程中文字幕
- 系统集成项目管理工程师计划
- 化学计算机专业能考哪些公务员,大学考公务员“轻松”的4个专业,计算机专业上榜,第3个最好考...
- 英语阅读——Speaking Chinese in America