У меня есть функция PHP, которая требует, может взять 3 параметра... Я хочу передать его значение для 1-х и 3-х параметров, но я хочу, чтобы 2-й принял значение по умолчанию...
Как я могу указать, которые я являюсь передающим, иначе его интерпретируемый как я передающий значения для 1-х и 2-х слотов.
Спасибо.
Вы не можете «не передать» параметр, который не находится в конце списка параметров:
В вашем случае вы должны передать значение для 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'
));
Это позволит вам:
Но:
Как только вы определили параметр по умолчанию, все параметры после него не могут быть обязательными. Вы можете сделать что-то вроде:
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
для проверки типов, если ваша функция достаточно проста.