Аргументи стандартних функцій у динамічних мовах

Динамічні мови програмування в цілому та 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' ;