php使用反射插入对象示例分享


Posted in PHP onMarch 11, 2014
/**  
    * 插入insertModel(),利用反射,效率稍差 
    * @param class $model 对象
    * @param bool $is_returnLastInsertId 是否返回添加ID 
    * @return int 默认返回成功与否,$is_returnLastInsertId 为true,返回添加ID 
    */ 
    public function insertModel($model,$is_returnLastInsertId=FALSE) {
        try {
            require_once dirname(dirname(__FILE__)).'\Models\BaseModel.php';
            if(!is_subclass_of($model, "BaseModel")){
                exit($this->getError(__FUNCTION__, __LINE__));
            }
            $className=get_class($model);
            $tName = $this->formatTabName($className);
            $reflectionClass=new ReflectionClass($className);
            $properties=$reflectionClass->getProperties();
            unset($properties[0]);
            $fields="";
            $vals="";
            foreach ($properties as $property) {
                $pName=$property->getName();
                $fields.=$pName.",";
                $vals.='\''.$model->$pName.'\''.',';
            }
            $fields=rtrim($fields,',');
            $vals=rtrim($vals,',');
            $this->sql = "insert into {$tName} ({$fields}) values ({$vals})";
            if($is_returnLastInsertId){
                $this->conn->exec($this->sql);
                $lastId = (int)$this->conn->lastInsertId();                return $lastId;
            }  else {
                $row = $this->conn->exec($this->sql);
                return $row;
            }
        } catch (Exception $exc) {
            echo $exc->getMessage();
        }
    }
PHP 相关文章推荐
PHP截取中文字符串的问题
Jul 12 PHP
多文件上载系统完整版
Oct 09 PHP
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
php木马webshell扫描器代码
Jan 25 PHP
PHP Switch 语句之学习笔记
Sep 21 PHP
php权重计算方法代码分享
Jan 09 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
Apr 20 PHP
Ajax和PHP正则表达式验证表单及验证码
Sep 24 PHP
PHP简单预防sql注入的方法
Sep 27 PHP
ThinkPHP的SAE开发相关注意事项详解
Oct 09 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 PHP
php数组编码转换示例详解
Mar 11 #PHP
使用Discuz关键词服务器实现PHP中文分词
Mar 11 #PHP
PHP输出缓存ob系列函数详解
Mar 11 #PHP
php初始化对象和析构函数的简单实例
Mar 11 #PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 #PHP
php调用c接口无错版介绍
Mar 11 #PHP
PHP goto语句简介和使用实例
Mar 11 #PHP
You might like
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
PHP闭包实例解析
2014/09/08 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
js判断字符长度及中英文数字等
2014/03/19 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
微信小程序结合mock.js实现后台模拟及调试
2019/03/28 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
个人自我剖析材料
2014/02/07 职场文书
员工保密承诺书
2014/05/28 职场文书
优秀班集体先进事迹材料
2014/05/28 职场文书
物业消防安全责任书
2014/07/23 职场文书
法人授权委托书公证范本
2014/09/14 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
舞出我人生观后感
2015/06/16 职场文书
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
MySQL连接控制插件介绍
2021/09/25 MySQL