Нет, это не правильный способ сделать это. foo($bar = 'baz')
означает, что вы назначаете 'baz'
переменной $bar
как обычно. Эта операция присваивания приводит к назначенному значению, поэтому выражение $bar = 'baz'
имеет значение 'baz'
. Это значение 'baz'
передается в функцию. Функции не имеют никакой подсказки, которую вы присвоили переменной $bar
.
Другими словами, PHP не поддерживает именованные аргументы.
Если ваша функция принимает много параметров, все или большинство из которых являются необязательными, используйте массивы:
function foo(array $args = array()) {
// set default values for arguments not supplied
$args += array('name' => 'John', 'country' => 'USA', …);
// use $args['name'] etc.
// you could do extract($args), then use $name directly,
// but take care not to overwrite other variables
}
foo(array('country' => 'Japan'));