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

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

$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'; 

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