Я считаю полезным использовать массив аргументов необязательный , когда я хочу переопределить набор значений по умолчанию в функции. Это может быть полезно при создании объекта, который имеет много различных параметров конфигурации или является просто тупым контейнером для информации. Это то, что я взял в основном из мира Ruby.
Примером может быть, если я хочу настроить контейнер для видео на моей веб-странице:
function buildVideoPlayer($file, $options = array())
{
$defaults = array(
'showAds' => true,
'allowFullScreen' = true,
'showPlaybar' = true
);
$config = array_merge($defaults, $options);
if ($config['showAds']) { .. }
}
$this->buildVideoPlayer($url, array('showAds' => false));
Обратите внимание, что начальным значением $ options является пустой массив, поэтому указывать его вообще необязательно.
Кроме того, с помощью этого метода мы знаем, что $ options всегда будет массивом, и мы знаем, что эти ключи имеют значения по умолчанию, поэтому нам не нужно постоянно проверять is_array()
или isset()
при ссылке на аргумент.