При запросах серверу xhr.send("info-edit&user=1&content=html")
info-edit:
user: 1
content: html
Решил избавиться от кода такого типа:
if(isset($_POST['info-edit'])) {
$user = (int) $_POST['user'];
$content = (string) $_POST['content'];
}
- Чтобы объявить в одну строку все переменные
- Проверить запрос на все ключи
- Не писать каждый раз такие штуки как
$_POST
иisset
- Более аккуратный код
Создал функцию request для запуска скрипта по первому ключу из запроса. Затем, сопоставляю ключи к объявляемым переменным в list по порядку. В случае отсутствия ключа возвращаю ошибку клиенту:
if(request('info-edit')) {
list($id, $content) = post('user', 'content');
echo 'user id is '.$id;
}
Код выше работает, но всё равно меня не устраивает.
Нельзя в списке задать тип переменной list((int) $id)
Искал аналог list()
или написание функции с объявлением переменной в аргументе что-то вроде кода ниже, но ничего не нашёл
post((int) $id, 'id');
echo $id;
function post($var, $key) {
return $var = $_POST[$key];
}
Пока остался на решении проверять ключи и по ним же создавать глобально переменные, но тип переменных не объявлен
if(request('info-edit')) {
post('user', 'content');
echo $user.', '.$content;
}
function post() {
foreach(func_get_args() as $key) {
if(isset($_POST[$key])) {
$GLOBALS[$key] = $_POST[$key];
} else {
echo 'err: bad request';
exit();
}
}
}
Как лучше проверить запрос заданный на сервере в начале скрипта в одну строчку с объявлением переменных и их типом?
Или как передать в функцию post тип (int)
или (string)
по умолчанию?
Свежие комментарии