我正在编写带有以下代码的代码,用于休息api
。
我认为,在控制器中完成验证,服务层关心编写业务逻辑和模型,负责数据库操作。我希望我是对的。
我在此澄清的是,我是否可以将var_id
(以下划线分开)发送到服务层或varID
(驼峰式)。
我搜索了很多api
次来电,其中大多数是var_id
,这也是我自己使用的原因。
但是我如何在这里使用变量,因为zend框架代码适用于camel-case,如果为每个变量分配变量varID = var_id
,是不是正确。
$dataSendToService = array(
$varID = var_id,
$varID2 = var_id2;
);
我在create方法中调用api
,如下所示。
http://128.12.788.88/api/v1/users/72
json得到这样的方法
{
"var_id":"var_value",
"var_id1":"var_value1"
}
在控制器中:
function create() {
$body = $this->getRequest()->getContent();
$data = json_decode($body);
$id = $this->params('id');
//validation
if( !isset( $data->pat_id ) || empty( $data->pat_id ) ) {
$resp = array(
'status' => 'failure',
'errorCode' => 531,
'errorMessage' => 'Patient ID should not be empty'
);
return new JsonModel($resp);
}
if( !isset( $data->doc_id ) || empty($data->doc_id )) {
$resp = array(
'status' => 'failure',
'errorCode' => 532,
'errorMessage' => 'Doctor ID should not be empty'
);
return new JsonModel($resp);
}
if( !isset( $data->apt_time ) || empty($data->apt_time )) {
$resp = array(
'status' => 'failure',
'errorCode' => 533,
'errorMessage' => 'Appointment time should not be empty');
return new JsonModel($resp);
}
if( !isset( $data->apt_subject ) || empty($data->apt_subject )) {
$resp = array(
'status' => 'failure',
'errorCode' => 534,
'errorMessage' => 'Appointment Subject time should not be empty');
return new JsonModel($resp);
}
$sm = $this->getServiceLocator();
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$usersService = new UsersService($dbAdapter);
$resp = $usersService->profile($data,$id);
}
在服务中:
function create() {
//get the data and pass it to model
}
模特:
function create() {
//get the data and insert in table and return the result
}
答案 0 :(得分:0)
在ZF2
中使用下划线分隔值是完全正确的,但实际上骆驼套管似乎是更常见的做法。
您绝对不必手动执行所有操作,您可以轻松使用过滤器将json
变量更改为驼峰式案例:
use Zend\Filter\Word\CamelCaseToUnderscore;
...
$filter = new CamelCaseToUnderscore();
print $filter->filter('ThisIsMyContent');
回到下划线:
use Zend\Filter\Word\CamelCaseToDash;
...
filter = new CamelCaseToDash();
print $filter->filter('ThisIsMyContent');
如果您使用hydrator
,则可以使用the ZF2 ClassMethods
水分器,可以通过将布尔值传递给构造函数来设置为extract
和hydrate
:
underscore-separated
(true)或camel-case
(false)
use Zend\Stdlib\Hydrator\ClassMethods;
...
$boolean = true|false;
$hydrator = new ClassMethods($boolean)