如何在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. ...
最新文章
- DNA sequencing technologies: 2006–2016
- 2009年计算机二级c语言考试真题,2009年3月全国计算机二级C语言考试真题.doc
- 《操作系统真象还原》-阅读笔记(中)
- java中的位移运算符_Java 位移运算符
- 网站前端_EasyUI.基础入门.0002.带你玩转jQuery EasyUI Panel组件 ?
- 一种新的排序算法,基于优先队列
- 字符编码 and cpp
- PHP MD5 SHA1 比较 漏洞绕过
- JS函数创建的几种方式
- ACM算法竞赛入门 概述
- 基于java实现学科竞赛管理系统「Springboot+mybatis+lyaui」
- cad二次开发之无法验证该可执行文件的发布者解决方案
- 计算机主板显卡接口,【我想给电脑加个显卡,但是不知道这个主板的显卡接口是什么类型的?】.请大家帮忙...
- 行远自迩,不负韶华!2020年度博客之星TOP 20榜单揭晓
- 永恒之黑(CVE-2020-0796 微软SMBv3协议远程代码执行漏洞)
- clip gradient
- EntityRef:expecting“;”
- 关于高维空间的一些思考
- 2022年03月05日:宜未雨而绸缪,毋临渴而掘井
- Windows下的日志机制
热门文章
- strstr函数头文件_strstr函数
- 基于算力网络的大数据计算资源智能调度分配方法
- 计算机专业的学生应该怎样提高自己的编程能力?
- matlab 地震波过滤器设计
- 八十年代的计算机游戏,盘点PC游戏史上最重要的50款游戏!第1期:60-80年代
- python带你体验唯美雪景,愿这个冬天的你,不缺暖阳
- ORA-12518: TNS:listener could not hand off client connection
- C#阿里云视频中心——直播
- cocos2dx 移植winphone 整理二
- 2022年危险化学品经营单位安全管理人员考试题及答案