Это хорошая идея, чтобы быть более явным в подобных случаях, особенно в PHP, поскольку он имеет несколько запутанные правила преобразования типов (например, "0" является ложным, как вы указали).
Если вы хотите быть строгим, позвольте вашей функции readSettings
вернуть правильную настройку или четко определенное значение, если настройки не найдены, например, null
. Тогда вы должны использовать его как:
$spaces = readSettings('spaces');
if (null === $spaces) {
$spaces = 5;
}
Если вы хотите быть более щедрым и хотите, чтобы $ пробелы были не пустыми, используйте:
$spaces = readSettings('spaces');
if (empty($spaces)) { // or: if (!$spaces) {
$spaces = 5;
}
Вы можете сократить его на стоимость второго вызова функции или некрасивых конструкций (не рекомендуется):
$spaces = readSettings('space') ? readSettings('space') : 5;
$spaces = ($x = readSettings('space')) ? $x : 5; // UGLY!
Но будьте внимательны, если вы хотите, чтобы 0
было допустимым значением для $spaces
!
Из Дзэн Питона :
Явное лучше, чем неявное.
В вашем случае я бы рекомендовал просто добавить второй параметр $default
в readSettings()
:
function readSettings($key, $default=null) {
return isset($settings[$key]) ? $settings[$key] : $default;
}
$spaces = readSettings('spaces', 5);