Разработчику. Сборник рецептов PHP
Задавайте вопросы

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

Вернуться назад

Задача

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

Решение

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

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

Обсуждение

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

$string = ' I am some HTML ';
wrap_html_tag($string);

возвращает:

<b>I am some HTML</b>

Следующий пример:

wrap_html_tag($string , ' i ');

возвращает:

<i>I am some HTML</i>

Определяя значения по умолчанию, необходимо помнить две важные вещи. Во-первых, все параметры со значениями по умолчанию должны следовать за параметрами без значений по умолчанию. В противном случае 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 не было передано никакого значения. А если был передан тег (не пустой), то она возвратит строку, находящуюся внутри тегов.

В зависимости от обстоятельств другой альтернативой значения по умолчанию для переменной $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] ");
}

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования


Рейтинг Сайтов ДОСКИ.РУ