В руководстве PHP, чтобы показать синтаксис для функций с необязательными параметрами, они используют скобки вокруг каждого набора зависимых необязательных параметров. Например, для date()
функции руководство гласит:
string date ( string $format [, int $timestamp = time() ] )
Где $timestamp
это необязательный параметр, и если оставить его пустым, по умолчанию time()
возвращается значение функции.
Как вы собираетесь создавать необязательные параметры, подобные этим, при определении пользовательской функции в PHP?
function dosomething($var1, $var2, $optionalValue = null)
Я нашел этот лучший вариант.Если вам нужна эта функциональность, однако:
Предполагая,
$bar
конечно, не будет логическим, конечно.источник
$bar === false
- это действие, которое должно быть выполнено, когда по$bar
умолчаниюfalse
. Это позволит избежать некорректного действия, если0
оно передано, поэтому оно работает - ЕСЛИ БУЛ не требуется. Как сказал Kzqai, следует использовать более общее решение$bar = null
, потому что оно также может использоваться, когда значения $ bar являются логическими. Тогда тест становитсяif (is_null($bar))
илиif ($bar === null)
.Некоторые заметки, которые я также нашел полезными:
Держите значения по умолчанию на правой стороне.
Значением аргумента по умолчанию должно быть константное выражение. Это не может быть переменная или вызов функции.
источник
Дайте необязательному аргументу значение по умолчанию.
источник
Функция даты будет определена примерно так:
Обычно вы бы поместили значение по умолчанию, например, так:
Однако только литералы являются допустимыми аргументами по умолчанию, поэтому я использовал в
null
качестве аргумента по умолчанию в первом примере, не$timestamp = time()
, и соединил его с проверкой нулевой. Литералы включают массивы (array()
или[]
), логические значения, числа, строки иnull
.источник
Если вы не знаете, сколько атрибутов нужно обработать, вы можете использовать переменную tok (
...
) с переменным списком аргументов, представленную в PHP 5.6 ( см. Полную документацию здесь ).Синтаксис:
Например:
Как видите, этот токен в основном превращает все параметры в массив, который вы можете обрабатывать любым способом, который вам нравится.
источник