В статьях цикла «PHP-кодинг» я буду собирать такие приёмы PHP программирования (мне больше нравится слово «кодинг»), для использования которых мне пришлось лезть в справочник или даже в Интернет. Обычно это что-то редкоиспользуемое или нетривиальное. Сегодня это определение пользовательской функции с произвольным числом аргументов.

Функция с произвольным числом аргументов

Понадобилась мне пользовательская функция, которая бы принимала заранее неизвестное число аргументов. Для этого можно в определении функции зарезервировать определённое число аргументов (пример функции, принимающей до 3-х аргументов):

function my (arg1=FALSE,  arg2=FALSE, arg3=FALSE) { ... }

Здесь при обращении к функции мы можем передать ей 1, 2 или 3 аргумента, а можем не передавать их вовсе (если аргумент не передан, в теле функции он будет иметь значение по умолчанию — FALSE). В самом теле функции будем использовать только те аргументы, значение которых не равно FALSE.

Если вы используете PHP версии ниже 4, то такой вот велосипед вам придётся изобретать. Если же ваш PHP 4 версии или выше, то можно не мудрствовать лукаво, а пользоваться предназначенными для этого средствами языка. Объявляем пользовательскую функцию без аргументов, а в теле пользуемся функциями PHP для определения числа аргументов, получения аргументов:

function my () {
  # Узнаём число переданных аргументов
  $numargs = func_num_args();
  # Получаем аргумент по номеру (нумерация с нуля)
  $arg_1 = func_get_arg (1);
  # Получаем все аргументы одним массивом
  $all_args = func_get_args();
}

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

При поддержке dancecommunity.ru [1]

Запись опубликована 12 декабря 2009 года. Не так давно в рубрике «Web-кодинг» были опубликованы следующие посты:

: ретвит этого поста (как это?) увеличивает долю добра на квадратный байт Интернета! Кнопки других социальных сервисов плавают слева, чтобы вы могли парой кликов поделиться прочитанным с друзьями!

Хотите получать новые публикации на почту?

Подписка на RSS канал блога RSS подписка (как это?) поможет вам не пропустить ничего интересного на этом блоге.