Каковы правила вызова функций PHP с недостаточным количеством параметров? - PullRequest
2 голосов
/ 12 июля 2011

У меня есть функция, которая принимает два аргумента, но я хочу, чтобы второй был необязательным:

function myFunction($arg1, $arg2) {
  //blah
  //blah
  if (isset($arg2)) {
    //blah
  } else {
    //blah
  }
}

Так что, когда я звоню, я могу сделать myFunction("something") или myFunction("something", "something else").

Когда я включаю только один аргумент, PHP выдает следующее предупреждение:

Предупреждение: отсутствует аргумент 2 для myFunction (), ...

Так что это работает, но, очевидно, разработчики нахмурились.

Это нормально, или я должен передать "" или false или 0 второму аргументу, когда я не хочу его использовать и проверять его вместо использования isset()?

Я заметил, что многие люди пропускают аргументы при вызове функций в JavaScript, поэтому я спрашиваю, делается ли это и в PHP.

Ответы [ 5 ]

6 голосов
/ 12 июля 2011

Это делается путем установки некоторых параметров в качестве необязательных / с установкой по умолчанию:

function myFunction($arg1, $arg2 = false)

тогда вы можете вызвать функцию следующим образом:

myFunction('something');

или

myFunction('something', 'something else');

3 голосов
/ 12 июля 2011

Вы можете установить его в объявлении функции:

function myFunction($arg1, $arg2 = NULL) {

Таким образом, второй параметр является необязательным.Обратите внимание, что необязательные параметры должны быть в конце, после них не должно быть никаких необязательных параметров.

1 голос
/ 12 июля 2011

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

function myFunction($arg1, $arg2 = false) {
  //blah
  //blah
  if (isset($arg2)) {
    //blah
  } else {
    //blah
  }
}
0 голосов
/ 12 июля 2011

Определите значение по умолчанию для параметра в функции:

public function foo($arg1, $arg2 = 'default') {
    //yourfunction 
}
0 голосов
/ 12 июля 2011
...