Аргументи стандартних функцій у динамічних мовах
Динамічні мови програмування в цілому та PHP зокрема дозволяють задавати значення за промовчанням для параметрів функцій та методів.
За промовчанням можна вказати значення у списку параметрів:
function example($foo =5, $bar ='test' ) // . >
Але тоді у разі, якщо необхідно пропустити параметр (а саме для цього і потрібні значення за замовчуванням), програміст змушений згадувати, яке ж значення за замовчуванням для параметра, що пропускається, або відкривати документацію по конкретній функції. Насправді це недостатньо зручно.
Тому можна зробити інакше: як формальні значення за замовчуванням завжди використовувати значення null , а реальні значення за умовчанням ініціалізувати вже всередині функції:
function example($foo =null, $bar =null ) if (null === $foo) $foo =5 ; > if (null === $bar) $bar ='test' ; > //. >
Тоді для пропуску будь-якого необов'язкового параметра достатньо буде вказати як його значення уніфіковане значення null:
Якщо параметрів у функції стає занадто багато, має сенс розглянути варіант використання іменованих параметрів як елементів асоціативного масиву, що є єдиним (або останнім з двох-трьох обов'язкових або найчастіше використовуваних) формальним параметром функції:
function example($options) $foo = array_key_exists('foo', $options) ? $options['foo'] :5 ;
$bar = array_key_exists('bar', $options) ? $options['bar'] :'test' ;