Я устал от использования кода, как:
$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 («blog»);
У входного класса будет статический метод, который будет определять, когда вход имеет либо значение $ _POST и $ _GET, либо значение NULL.
Вы можете просто написать собственный помощник:
function get($name, $default=null){
return isset($_GET[$name]) ? $_GET[$name] : $default;
}
$blog = get('blog', 'default');
Кроме того, у вас есть расширение фильтра, например.:
$blog = filter_input(INPUT_GET, 'blog') ?: 'default';
Это не заметно короче, но позволяет дальнейшую проверку и дезинфекцию (и это также тривиально, чтобы обернуть в пользовательскую функцию).