Я пишу код со следующим для mat в rest api
.
Я думал, что валидация, выполняемая в контроллере, и уровень обслуживания заботится о написании бизнес-логики и модели, заботится о операциях с базой данных. Надеюсь, я прав.
Мое разъяснение здесь заключается в том, могу ли я отправить var_id
(выделение подчеркивания) на уровень обслуживания или в виде varID
(верблюжьей кейс).
Я искал много вызовов api
, большинство из них - var_id
, поэтому я тоже использовал себя.
Но как я могу использовать переменную здесь, потому что код рамки zend работает с верблюжьим футляром, если я назначаю переменные varID = var_id
для каждой переменной, правильно ли это.
$dataSendToService = array(
$varID = var_id,
$varID2 = var_id2;
);
Я api
как api
ниже в методе create.
http://128.12.788.88/api/v1/users/72
Метод json get like this
{
"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
}
Совершенно точно использовать выделенные значения подчеркивания в ZF2
но, 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
вы можете использовать гидратор ClassMethods
ClassMethods, который может быть установлен для extract
и hydrate
между ними, передавая логическое значение конструктору:
underscore-separated
, camel-case
underscore-separated
(истина) или camel-case
(ложь)
use Zend\Stdlib\Hydrator\ClassMethods;
...
$boolean = true|false;
$hydrator = new ClassMethods($boolean)