Home  >  Article  >  Backend Development  >  php使用反射插入对象示例分享_PHP

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

WBOY
WBOYOriginal
2016-06-01 11:55:27830browse

复制代码 代码如下:
/** 
    * 插入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();
        }
    }

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn