Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 4.3.4 Функции языка PHP.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
252.42 Кб
Скачать

Функции, определяемые пользователем (пользовательские)

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

function foo ($arg_1, $arg_2, ..., $arg_n)

{

echo "Пример \n";

return $retval;

}

Внутри функции может появляться любой правильный код PHP, даже другие функции и определения классов.

В PHP 3 функции обязаны быть определены до обращения к ним. Такого требования нет в PHP 4.

PHP не поддерживает перегрузку/overloading функций; также невозможно разопределить или переопределить ранее объявленную функцию.

PHP 3 не поддерживает переменное количество аргументов функции, хотя аргументы по умолчанию поддерживаются (см. Значения аргументов по умолчанию). PHP 4 поддерживает и то, и другое: см. Списки аргументов переменного размера и статьи о функциях func_num_args() , func_get_arg() и func_get_args().

Аргументы функции

Информация может передаваться в функцию через список аргументов, который является списком разделённых запятыми переменных и/или констант.

PHP поддерживает разбор аргументов по значению (по умолчанию), разбор по ссылке и значения по умолчанию. Списки аргументов Variable-length поддерживаются только в PHP 4 и позднее; см. Списки аргументов переменного размера и статьи о функциях func_num_args(), func_get_arg() и func_get_args(). Аналогичный эффект может быть достигнут в PHP 3 путём передачи функции массива аргументов:

function takes_array($input)

{

echo "$input[0] + $input[1] = ", $input[0]+$input[1];

}

Создание аргументов, передаваемых по ссылке

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

Если вы всегда хотите передавать аргументы по ссылке, вы можете ввести префикс-амперсанд (&) в имени аргумента в определении функции:

function add_some_extra(&$string)

{

$string .= 'and something extra.';

}

$str = 'This is a string, ';

add_some_extra($str);

echo $str;// выводит 'This is a string, and something extra.'

Значения по умолчанию аргументов

Функция может определить значения по умолчанию в стиле C++ для скалярных аргументов:

function makecoffee ($type = "cappuccino")

{

return "Making a cup of $type.\n";

}

echo makecoffee ();

echo makecoffee ("espresso");

Вывод будет таким:

Making a cup of cappuccino.

Making a cup of espresso.

Значение по умолчанию обязано быть константным выражением, а не (например) переменной или членом класса.

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

function makeyogurt ($type = "acidophilus", $flavour)

{

return "Making a bowl of $type $flavour.\n";

}

echo makeyogurt ("raspberry"); // не будет работать так, как ожидается

Вывод этого примера:

Warning!: Missing argument 2 in call to makeyogurt() in

/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41

Making a bowl of raspberry.

Теперь сравним с этим:

function makeyogurt ($flavour, $type = "acidophilus")

{

return "Making a bowl of $type $flavour.\n";

}

echo makeyogurt ("raspberry"); // работает как положено

На выводе этого примера:

Making a bowl of acidophilus raspberry.