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实现登陆验证码(类似条行码状)
Oct 09 PHP
我的论坛源代码(九)
Oct 09 PHP
require(),include(),require_once()和include_once()的异同
Jan 02 PHP
那些年一起学习的PHP(三)
Mar 22 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
Jun 07 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
Mar 25 PHP
PHP生成条形码大揭秘
Sep 24 PHP
php 查找数组元素提高效率的方法详解
May 05 PHP
基于php中echo用逗号和用点号的区别详解
Jan 23 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
May 11 PHP
thinkphp5.1框架模板赋值与变量输出示例
May 25 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
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
原生js实现放大镜
2017/02/20 Javascript
jQuery事件详解
2017/02/23 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
Python yield 使用方法浅析
2017/05/20 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
详解Python绘图Turtle库
2019/10/12 Python
python next()和iter()函数原理解析
2020/02/07 Python
Python的in,is和id函数代码实例
2020/04/18 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
80后职场人的职业生涯规划
2014/03/08 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
python for循环赋值问题
2021/06/03 Python
Vue的生命周期一起来看看
2022/02/24 Vue.js