11
Июн
2016

Объявление переменных POST запроса

При запросах серверу 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'];
}

введите сюда описание изображения

  1. Чтобы объявить в одну строку все переменные
  2. Проверить запрос на все ключи
  3. Не писать каждый раз такие штуки как $_POST и isset
  4. Более аккуратный код

Создал функцию 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) по умолчанию?

Источник: https://ru.stackoverflow.com/questions/533947/%D0%9E%D0%B1%D1%8A%D1%8F%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85-post-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0

Share

Тебе может это понравится...