>php教程 >PHP源码 >在php中使用反射插入对象

在php中使用反射插入对象

PHP中文网
PHP中文网원래의
2016-05-25 16:59:481196검색

在php中使用反射插入对象

/**
 * 插入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__)).'ModelsBaseModel.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();
}
}

                       


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.