php-crud-api改造记

php-crud-api改造记

php-crud-api地址

这个是小组组长要求使用到的一个开源的php的库。目地是,减少php代码,使精力专注在前端页面上。但是在使用过程中,发现并不能很好的与前端的Extjs框架配合好。为了解决这个问题,便要对其进行适当的改进。

改造如下

前端提交表单,需要返回success字段

前端需求数据跟后端的api接口返回数据格式不一致,前端需要提交数据成功后,需要增加一个success=true字段,而原有的api框架,只返回成功后的api。需要需要对其进行改造。

改造得比较丑,代码可以优化。另外,这种需求是简单的处理。结合之前看到的其他的框架,可以用事件插件模式来处理。(参见typecho的设计模式),RecordController.php,create、update方法。
话不多说,代码前后对比:

改造前:

$params = $request->getParams();
if (is_array($record)) {
    $result = array();
    foreach ($record as $r) {
        $result[] = $this->service->create($table, $r, $params);
    }
    return $this->responder->success($result);
} else {
    return $this->responder->success($this->service->create($table, $record, $params));
}
	

改造后:

$params = $request->getParams();
$needSuccess=false;
if(isset($params['success'])){
	$needSuccess=true;
}
if (is_array($record)) {
	$result = array();
	foreach ($record as $r) {
		$result[] = $this->service->create($table, $r, $params);
	}
	if($needSuccess){
		return $this->responder->success(array('success'=>true,'result'=>$result));
	}else{
		return $this->responder->success($result);
	}
} else {
	if($needSuccess){
		$result=$this->service->create($table, $record, $params);
		return $this->responder->success(array('success'=>true,'result'=>$result));
	}else{
		return $this->responder->success($this->service->create($table, $record, $params));
	}
	
}