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. DNA sequencing technologies: 2006–2016
  2. 2009年计算机二级c语言考试真题,2009年3月全国计算机二级C语言考试真题.doc
  3. 《操作系统真象还原》-阅读笔记(中)
  4. java中的位移运算符_Java 位移运算符
  5. 网站前端_EasyUI.基础入门.0002.带你玩转jQuery EasyUI Panel组件 ?
  6. 一种新的排序算法,基于优先队列
  7. 字符编码 and cpp
  8. PHP MD5 SHA1 比较 漏洞绕过
  9. JS函数创建的几种方式
  10. ACM算法竞赛入门 概述
  11. 基于java实现学科竞赛管理系统「Springboot+mybatis+lyaui」
  12. cad二次开发之无法验证该可执行文件的发布者解决方案
  13. 计算机主板显卡接口,【我想给电脑加个显卡,但是不知道这个主板的显卡接口是什么类型的?】.请大家帮忙...
  14. 行远自迩,不负韶华!2020年度博客之星TOP 20榜单揭晓
  15. 永恒之黑(CVE-2020-0796 微软SMBv3协议远程代码执行漏洞)
  16. clip gradient
  17. EntityRef:expecting“;”
  18. 关于高维空间的一些思考
  19. 2022年03月05日:宜未雨而绸缪,毋临渴而掘井
  20. Windows下的日志机制

热门文章

  1. strstr函数头文件_strstr函数
  2. 基于算力网络的大数据计算资源智能调度分配方法
  3. 计算机专业的学生应该怎样提高自己的编程能力?
  4. matlab 地震波过滤器设计
  5. 八十年代的计算机游戏,盘点PC游戏史上最重要的50款游戏!第1期:60-80年代
  6. python带你体验唯美雪景,愿这个冬天的你,不缺暖阳
  7. ORA-12518: TNS:listener could not hand off client connection
  8. C#阿里云视频中心——直播
  9. cocos2dx 移植winphone 整理二
  10. 2022年危险化学品经营单位安全管理人员考试题及答案