Это также хорошо для Поблочного тестирования, можно ввести собственные классы (которые отвечают требованиям интерфейса) в класс, который зависит от него
Вы не можете делать то, что хотите, используя только параметры по умолчанию. Значения по умолчанию применяются только к отсутствующим аргументам, и может отсутствовать только последний аргумент (ы).
Вы можете либо добавить строки, подобные
$vega = $vega ? $vega : 'carrot';
, и вызвать функцию как
testParam('apple',false,'something');
, либо использовать более общую технику передачи параметров в массиве с именами параметров в качестве ключей. Что-то вроде
function testparam($parms=false) {
$default_parms = array('fruit'=>'orange', 'vega'=>'peas', 'starch'=>'bread');
$parms = array_merge($default_parms, (array) $parms);
echo '<br>fruit = $parms[fruit]';
echo '<br>vega = $parms[vega]';
echo '<br>starch = $parms[starch]';
}
testparm('starch'=>'pancakes');
//we get:
//fruit = orange
//vega = peas
//starch = pancakes
Это немного более подробно, но и более гибко. Вы можете добавлять параметры и значения по умолчанию, не изменяя существующих абонентов.
К сожалению, вы не можете сделать это в PHP.
Вы должны передать 0 , или null
, или какое-либо другое значение, а затем, если значение равно 0 или null
, измените его на значение по умолчанию.
Здесь - еще один вопрос, который должен дать вам больше информации.