Как создать дополнительные аргументы в php?

В руководстве PHP, чтобы показать синтаксис функций с дополнительными параметрами, они используют скобки вокруг каждого набора зависимых необязательных параметров. Например, для функции date() руководство читает:

 string date ( string $format [, int $timestamp = time() ] ) 

Где $timestamp является необязательным параметром, а при отсутствии пустого значения по умолчанию используется возвращаемое значение функции time() .

Как вы собираетесь создавать дополнительные параметры, например, при определении пользовательской функции в PHP?

Related of "Как создать дополнительные аргументы в php?"

Как и в руководстве, используйте знак равенства ( = ) в определении параметров:

 function dosomething($var1, $var2, $var3 = 'somevalue'){ // Rest of function here... } 

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

Если вам нужна эта функциональность:

 function foo($foo, $bar = false) { if(!$bar) { $bar = $foo; } } 

Предполагая, что $bar как ожидается, не будет логическим, конечно.

Некоторые заметки, которые я также нашел полезными:

  • Сохраняйте значения по умолчанию с правой стороны.

     function whatever($var1, $var2, $var3="constant", $var4="another") 
  • Значение по умолчанию для аргумента должно быть константным выражением. Он не может быть переменной или вызовом функции.

Дайте опциональному аргументу значение по умолчанию.

 function date ($format, $timestamp='') { } 

Если вы не знаете, сколько атрибутов необходимо обработать, вы можете использовать токен вариационного аргумента ( ... ), введенный в PHP 5.6 ( см. Полную документацию здесь ).

Синтаксис:

 function <functionName> ([<type> ]...<$paramName>) {} 

Например:

 function someVariadricFunc(...$arguments) { foreach ($arguments as $arg) { // do some stuff with $arg... } } someVariadricFunc(); // an empty array going to be passed someVariadricFunc('apple'); // provides a one-element array someVariadricFunc('apple', 'pear', 'orange', 'banana'); 

Как вы можете видеть, этот токен в основном превращает все параметры в массив, который вы можете обрабатывать любым способом.

Функция даты будет определена примерно так:

 function date($format, $timestamp = null) { if ($timestamp === null) { $timestamp = time(); } // Format the timestamp according to $format } 

Обычно вы ставите значение по умолчанию следующим образом:

 function foo($required, $optional = 42) { // This function can be passed one or more arguments } 

Однако только литералы являются допустимыми аргументами по умолчанию, поэтому я использовал значение null качестве аргумента по умолчанию в первом примере, а не $timestamp = time() , и объединил его с нулевой проверкой. Литералы включают массивы ( array() или [] ), булевы, числа, строки и null .