Почему люди устанавливают параметры по умолчанию в функциях PHP? - PullRequest
0 голосов
/ 31 декабря 2011

Пример:

function example($x = "")
{
    Do something
}

Разве $ x по умолчанию не пусто? Зачем устанавливать это явно?

Ответы [ 4 ]

6 голосов
/ 31 декабря 2011

Не является ли $ x пустым по умолчанию уже?

Если значение по умолчанию не указано, $x не пустая строка по умолчанию, а неопределенная переменная.Существует разница между "" и NULL или неопределенными.
Однако установка значения по умолчанию позволяет пропустить параметр при вызове функции без предупреждения.

<?php
function test1($x = "DEFAULT") {
    echo $x;
}
function test2($x) {
    echo $x;
}

// Call each without the parameter $x:    
test1();
// DEFAULT

test2();
// Output:
PHP Warning:  Missing argument 1 for test2(), called in /home/mjb/test.php on line 10 and defined in /home/user/test.php on line 5
PHP Notice:  Undefined variable: x in /home/user/test.php on line 6
3 голосов
/ 31 декабря 2011

Основная причина в том, что установка по умолчанию в объявлении делает аргумент необязательным:

$a = example();
$b = example(5);
1 голос
/ 31 декабря 2011

Одна из причин, по которой я использую значения по умолчанию, заключается в том, что мне не нужно объявлять переменную при вызове функции, например:

function something(debug=false){
 doing something here;
 if ($debug === true){
  echo 'SOMETHING';
 }else{
  return true;
 }
}

Таким образом, вы можете отладить что-то, просто добавив переменнуюк вызову функции, но если вы не добавляете ее, функция предполагает, что она ложна.Это ценно в моей функции безопасности $ _GET, которую я использую для шифрования своих строк $ _GET при включении отладки, $ _GET декодируется и выгружается как массив внутри

<code><pre>print_r($_GET);

чтобы я мог видеть, какие значения находятся в $ _GET, но строка все еще зашифрована в адресной строке.

Надеюсь, это поможет

1 голос
/ 31 декабря 2011

Одна из причин заключается в том, что при повторном использовании функции вам не нужно явно устанавливать переменную.Это часто случается, когда по умолчанию установлено значение true или false.Таким образом, может показаться, что функция перегружена, как в других языках.Если эта переменная не содержит значения по умолчанию, вам всегда нужно будет установить это значение, иначе ваша функция выдаст ошибку, однако, установив переменную в значение по умолчанию, вам не нужно будет обязательно устанавливать значениепеременная.Надеюсь, что это поможет некоторым:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...