В руководстве PHP, чтобы показать синтаксис функций с дополнительными параметрами, они используют скобки вокруг каждого набора зависимых необязательных параметров. Например, для функции date()
руководство читает:
string date ( string $format [, int $timestamp = time() ] )
Где $timestamp
является необязательным параметром, а при отсутствии пустого значения по умолчанию используется возвращаемое значение функции time()
.
Как вы собираетесь создавать дополнительные параметры, например, при определении пользовательской функции в 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
.