PHP

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

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

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

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


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

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

возвращает:
I am some HTML


Следующий пример:
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]");
}
Теги:
умолчанию, string, значения, function, может, message, функции, чтобы, строку, Например, функцию, return, функция, возвращает, строка, передано, параметру, должны, favorite, параметры, необходимо, error, таблицы, сделать, никакого, присвоить, числом, передан, качестве, empty, примера, опять, состоит, нельзя, возьмем
Добавлено: 21 Июля 2018 12:49:16 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...