Я устал от использования кода:
$blog = isset($_GET['blog']) ? $_GET['blog'] : 'default';
но я не могу использовать:
$blog = $_GET['blog'] || 'default';
Есть ли способ сделать это без использования isset()
?
Вы должны дождаться следующей версии PHP, чтобы получить оператор объединения
// Uses $_GET['user'] if it exists -- or 'nobody' if it doesn't $username = $_GET['user'] ?? 'nobody'; // Loads some data from the model and falls back on a default value $model = Model::get($id) ?? $default_model;
Напишите вспомогательную функцию.
function arrayValue($array, $key, $default = null) { return isset($array[$key]) ? $array[$key] : $default; }
Применение:
$blog = arrayValue($_GET, 'blog');
Нет более короткого пути. Вы можете создать класс, который обрабатывает переменные $ _POST и $ _GET, и просто использовать его, когда вы звоните в блог.
Пример:
$ blog = Input :: put («блог»);
Класс ввода будет иметь статический метод, который будет определять, когда ввод имеет либо $ _POST, либо $ _GET, либо нулевое значение.
Вы можете просто написать собственный помощник:
function get($name, $default=null){ return isset($_GET[$name]) ? $_GET[$name] : $default; } $blog = get('blog', 'default');
Кроме того, у вас есть расширение фильтра , например:
$blog = filter_input(INPUT_GET, 'blog') ?: 'default';
Он не заметно короче, но допускает дальнейшую проверку и санитацию (а также тривиально обернуть пользовательскую функцию).