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中使用实体类的概念相关推荐

  1. 浅谈三层架构中的实体类(C#)

    最近因为三层架构中的实体类,引发了不少小问题,下面列举一下,谈谈自己的感想. 本文所指的实体类仅限于三层中的实体类,即数据库表的映射. 一.为什么要用实体类? |  使程序简洁易懂,便于维护. |  ...

  2. netbeans连接数据库_NetBeans Java EE技巧#1 –数据库中的实体类

    netbeans连接数据库 NetBeans IDE是开发各种应用程序的绝佳选择. 具体来说,我每天都使用它来开发和维护Java EE应用程序. 在过去的几个发行版中,不仅Java EE的生产力提高了 ...

  3. NetBeans Java EE技巧#1 –数据库中的实体类

    NetBeans IDE是开发各种应用程序的绝佳选择. 具体来说,我每天都使用它来开发和维护Java EE应用程序. 在过去的几个发行版中,不仅Java EE的生产力提高了,而且NetBeans ID ...

  4. java list 分组_Java 将List中的实体类按照某个字段进行分组并存

    1.JDK1.8之前: 假设有实体类User,里面有字段id,我们将相同id的User进行分组,并存放在Map中.(例子不是很恰当,但很能说明问题) public static void main(S ...

  5. android java 实体类 object变量 保存_Java中的实体类--Serializable接口、transient 关键字...

    在java中,实体类是一个非常重要的概念,我们可以在实体类中封装对象.设置其属性和方法等.关于实体类,也经常涉及到适配器模式.装饰者模式等设计模式.那么在实际代码开发中,关于实体类的注意事项有哪些呢? ...

  6. 自定义tt文本模板实现MySql指数据库中生成实体类

    自定义tt文本模板实现MySql指数据库中生成实体类 1.在项目中依次点击"添加"/"新建项",选择"文本模板",输入名称后点击添加. 2. ...

  7. java中遍历实体类,获取属性名和属性值

    方式一(实体类): //java中遍历实体类,获取属性名和属性值public static void testReflect(Object model) throws Exception{for (F ...

  8. 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 ...

  9. java将map根据key分组_Java将List中的实体类按照某个字段进行分组并存放至Map中操作代码...

    本篇文章小编给大家分享一下Java将List中的实体类按照某个字段进行分组并存放至Map中操作代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1. ...

最新文章

  1. 笔记本电脑处理器_英特尔发布第九代酷睿移动处理器:笔记本电脑进入8核5.0GHz时代!...
  2. 你是信用卡卡奴吗?怎么摆脱卡奴?
  3. javascript 分时函数 分批次添加DOM节点 timeChunk
  4. 【OpenCV 例程200篇】78. 频率域图像滤波基础
  5. /etc/passwd文件+/etc/shadow文件(图解+字段详解)
  6. java不等长二维数组_Java中关于二维数组的理解与使用
  7. Docker用Portainer将Solr集群添加入Repository
  8. 手机调用ArcGIS Server发布的Rest地图服务不显示问题
  9. 测试项目的makefile
  10. 全球及中国树脂晶圆切割刀片行业需求状况及竞争前景分析报告2021-2027年
  11. 鼠标模拟器,减轻你的重复操作!
  12. 一个静态路由配置实例(eNSP)
  13. 企业IP地址怎么划分
  14. Python项目实战化:爬取堆糖网研究所美好生活照
  15. Python OpenCV 写入视频
  16. Github 之 本地上传代码到 Github ,并且添加 .gitignore 文件 屏蔽一些文件上传(内附详细步骤)
  17. gtx1070显卡 linux,Ubuntu 16.04下Nvidia 显卡驱动安装
  18. 计算机专业打字有没有要求,计算机专业学生有必要专门花时间练习打字吗?
  19. 小辣椒安卓机器人无命令_小辣椒 GM-Q5+手机怎么双清?_安卓手机双清刷机图解说明...
  20. 新研究发现:太平洋上仅存的冰川将很快融化

热门文章

  1. 1-1 结构化数据建模流程范例
  2. 亚信科技新“三驾马车”再创佳绩,与数字经济同频共振
  3. scrt如何切换成英文版_SecureCRT 简介,中英文对照
  4. styl类型文件css,Stylus: 让你更简洁的完成css
  5. 机器学习_3.神经网络之CNN
  6. flutter 微信语音输入
  7. Music Theory for Songwriters: Rhythm 歌曲作者的音乐理论:节奏 Lynda课程中文字幕
  8. 系统集成项目管理工程师计划
  9. 化学计算机专业能考哪些公务员,大学考公务员“轻松”的4个专业,计算机专业上榜,第3个最好考...
  10. 英语阅读——Speaking Chinese in America