Использование значения по умолчанию при вызове функции
В PHP вы можете вызвать функцию. не вызывая все параметры, используя эту инструкцию.
function test($t1 ='test1',$t2 ='test2',$t3 ='test3')
{
echo "$t1, $t2, $t3";
}
И вы можете просто использовать функцию, подобную этой
test();
Итак, давайте просто скажем, что я хочу, чтобы последний был другим, но не другими. Единственное, что я могу сделать, это сделать это без успеха:
test('test1','test2','hi i am different');
Я пробовал это:
test(,,'hi i am different');
test(default,default,'hi i am different');
Каков наилучший способ сделать что-то подобное?
Ответы
Ответ 1
Использовать массивы:
function test($options = array()) {
$defaults = array(
't1' => 'test1',
't2' => 'test2',
't3' => 'test3',
);
$options = array_merge($defauts, $options);
extract($options);
echo "$t1, $t2, $t3";
}
Вызовите свою функцию следующим образом:
test(array('t3' => 'hi, i am different'));
Ответ 2
Вы не можете сделать это, используя raw PHP. Вы можете попробовать что-то вроде:
function test($var1 = null, $var2 = null){
if($var1 == null) $var1 = 'default1';
if($var2 == null) $var2 = 'default2';
}
а затем вызовите свою функцию, с null
в качестве идентификатора переменной по умолчанию. Вы также можете использовать массив со значениями по умолчанию, которые будут проще с большим списком параметров.
Еще лучше попытаться избежать всего этого и немного переосмыслить свой дизайн.
Ответ 3
Параметры со значениями по умолчанию должны быть последними, после того, как остальные, в PHP и все остальные до этой точки должны быть заполнены при вызове функции. Я не знаю, так или иначе, чтобы передать значение, которое вызывает значение по умолчанию.
Ответ 4
То, что я обычно делаю в этих ситуациях, это указать параметры как массив. Взгляните на следующий пример (непроверенный):
<?php
test(array('t3' => 'something'));
function test($options = array())
{
$default_options = array('t1' => 'test1', 't2' => 'test2', 't3' => 'test3');
$options = array_merge($default_options, $options);
echo $options['t1'] . ', ' . $options['t2'] . ', ' . $options['t3'];
}
?>
Ответ 5
вы можете определить функцию, например:
function grafico($valores,$img_width=false,$img_height=false,$titulo="title"){
if ($img_width===false){$img_width=450;}
if ($img_height===false){$img_height=300;}
...
}
и вызвать его без длительных параметров или
заменяя один или несколько "ложными":
grafico($values);
grafico($values,300);
grafico($values,false,400);
grafico($values,false,400,"titleeee");