Установка значений по умолчанию для параметров функции

Задача
Необходимо, чтобы параметр получил значение по умолчанию, если вызывающий функцию не передал для него никакого значения. Например, если в функцию вывода таблицы не передается значение ширины таблицы, то по умолчанию для этого параметра может быть установлено значение, равное 1.

Решение
Присвойте параметру значение по умолчанию в прототипе функции:

function wrap_html_tag($string, $tag = 'b') {
return "<$tag>$string";
}

Обсуждение
Пример в разделе «Решение» устанавливает для полужирного текста значение по умолчанию, равное b. Например:

$string = 'I am some HTML';
wrap_html_tag($string);
возвращает:
I am some HTML

Следующий пример:
wrap_html_tag($string, 'i');
возвращает:
I am some HTML

Определяя значения по умолчанию, необходимо помнить две важные вещи. Во-первых, все параметры со значениями по умолчанию должны следовать за параметрами без значений по умолчанию. В противном случае PHP не сможет определить, какие параметры опущены и должны принять значения по умолчанию, а какие аргументы заменяют значение по умолчанию.


Поэтому функция wrap_html_tag() не может быть определена следующим образом:
function wrap_html_tag($tag = 'i', $string)

Если так сделать и передать функции wrap_html_tag() только один аргумент, то PHP присвоит это значение переменной $tag и выдаст предупреждение, выражая недовольство пропуском второго аргумента.

Во-вторых, присвоенное значение должно быть константой: строкой или числом. Оно не может быть переменной. В качестве примера опять возьмем функцию wrap_html_tag(). Так делать нельзя:

$my_favorite_html_tag = 'i';
function wrap_html_tag($string, $tag = $my_favorite_html_tag) {
...
}

Если необходимо, чтобы по умолчанию не было присвоено ничего, то единственный способ это сделать состоит в том, чтобы присвоить параметру пустую строку:

function wrap_html_tag($string, $tag = '') {
if (empty($tag)) return $string;
return "<$tag>$string";
}

Эта функция возвращает оригинальную строку, если для переменной $tag не было передано никакого значения. А если был передан тег (не пустой), то она возвратит строку, находящуюся внутри тегов.В зависимости от обстоятельств другой альтернативой значения по умолчанию для переменной $tag являются значения 0 или NULL.


В функции wrap_html_tag() пустое значение тега нам ни к чему. Однако в некоторых случаях пустая строка может быть вполне допустима.

Например, функция join() часто вызывается с пустой строкой после вызова функции file(), чтобы поместить файл в строку. Кроме того, как пока-
зывает следующий код, можно использовать сообщение по умолчанию, если не передано никаких аргументов, и пустое сообщение, если передана пустая строка:

function pc_log_db_error($message = NULL) {
if (is_null($message)) {
$message = 'Couldn't connect to DB';
}
error_log("[DB] [$message]");
}

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Возвращение более одного значения
Возвращение значений по ссылке
Возвращение информации об ошибке
Вызов переменных функций
Доступ к глобальной переменной внутри функции

Вернуться в раздел: PHP / 6. Функции