Как сделать быстрое суждение и назначение без isset ()?

Я устал от использования кода, как:

$blog = isset($_GET['blog']) ? $_GET['blog'] : 'default';

но я не могу использовать:

$blog = $_GET['blog'] || 'default';

Есть ли способ сделать это без использования isset()?

0

Решение

Вам нужно дождаться следующей версии 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;
4

Другие решения

Напишите вспомогательную функцию.

function arrayValue($array, $key, $default = null)
{
return isset($array[$key]) ? $array[$key] : $default;
}

Использование:

$blog = arrayValue($_GET, 'blog');
1

Нет, нет более короткого пути, чем это. Вы можете создать класс, который обрабатывает переменные $ _POST и $ _GET, и просто использовать его каждый раз, когда вы вызываете блог.

Пример:

$ blog = Input :: put («blog»);

У входного класса будет статический метод, который будет определять, когда вход имеет либо значение $ _POST и $ _GET, либо значение NULL.

0

Вы можете просто написать собственный помощник:

function get($name, $default=null){
return isset($_GET[$name]) ? $_GET[$name] : $default;
}

$blog = get('blog', 'default');

Кроме того, у вас есть расширение фильтра, например.:

$blog = filter_input(INPUT_GET, 'blog') ?: 'default';

Это не заметно короче, но позволяет дальнейшую проверку и дезинфекцию (и это также тривиально, чтобы обернуть в пользовательскую функцию).

0
По вопросам рекламы [email protected]