Ответ 1
Как и в руководстве, используйте знак equals (=
) в определении параметров:
function dosomething($var1, $var2, $var3 = 'somevalue'){
// Rest of function here...
}
В руководстве PHP, чтобы показать синтаксис функций с дополнительными параметрами, они используют скобки вокруг каждого набора зависимых необязательных параметров. Например, для функции date()
руководство читает:
string date ( string $format [, int $timestamp = time() ] )
Где $timestamp
- необязательный параметр, а при отсутствии пустого значения по умолчанию используется значение time()
.
Как вы собираетесь создавать дополнительные параметры, например, при определении пользовательской функции в PHP?
Как и в руководстве, используйте знак equals (=
) в определении параметров:
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='') {
}
Функция даты будет определена примерно так:
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
.
Если вы не знаете, сколько атрибутов необходимо обработать, вы можете использовать токен вариационного аргумента (...
), введенный в 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');
Как вы можете видеть, этот токен в основном превращает все параметры в массив, который вы можете обрабатывать любым способом.