Как передать определенную переменную в функции PHP

У меня есть функция PHP, которая требует, может взять 3 параметра... Я хочу передать его значение для 1-х и 3-х параметров, но я хочу, чтобы 2-й принял значение по умолчанию...

Как я могу указать, которые я являюсь передающим, иначе его интерпретируемый как я передающий значения для 1-х и 2-х слотов.

Спасибо.

6
задан Ian Storm Taylor 18 March 2010 в 21:32
поделиться

2 ответа

Вы не можете «не передать» параметр, который не находится в конце списка параметров:

  • если вы хотите указать третий параметр, вы должны передать первый и второй
  • , если вы хотите указать 2-й параметр, вы должны передать 1-й - но 3-й можно не указывать, если это не обязательно.

В вашем случае вы должны передать значение для 2-го параметра - в идеале - значение по умолчанию; что, да, требует, чтобы вы знали это значение по умолчанию.


Возможной альтернативой было бы, если бы ваша функция не принимала 3 параметра, а только один, массив:

function my_function(array $params = array()) {
    // if set, use $params['first']
    // if set, use $params['third']
    // ...
}

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

my_function(array(
    'first' => 'plop',
    'third' => 'glop'
));

Это позволит вам:

  • принять любое количество параметров
  • все это может быть необязательным

Но:

  • ваш код будет труднее понять, а документация будет менее полезной: нет именованных параметров
  • ваша IDE не сможет дать вам подсказки параметры, принимаемые функцией
8
ответ дан 17 December 2019 в 00:07
поделиться

Как только вы определили параметр по умолчанию, все параметры после него не могут быть обязательными. Вы можете сделать что-то вроде:

const MY_FUNCTION_DEFAULT = "default";

public function myFunction($one, $two = "default", $three = 3)
{
   if (is_null($two)) $two = self::MY_FUNCTION_DEFAULT;
   //...
}

// call
$this->myFunction(1, null, 3);

Вы также можете определить пустой набор параметров и использовать func_get_args для получения параметров и анализа их с помощью instanceof или typeof/gettype для проверки типов, если ваша функция достаточно проста.

1
ответ дан 17 December 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: