Тема 5. Функции, определяемые пользователями

Опубликовано пользователем Бессонов Л.В. 19.02.2010г.

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

Под функцией понимают независимый блок кода, который устанавливает интерфейс вызова, выполняет определенную задачу и возвращает результат (если результат не возвращается, будем считать что возвращается результат типа «пустота»).

Прежде чем вызывать функцию её нужно определить (описать). При попытке вызвать функцию, которая не существует, отобразится сообщение об ошибке.

При отображении сообщения об ошибке необходимо проверить:

  1. Правильно ли указано имя функции.
  2. Существует ли данная функция в используемой версии РНР.

На имена функций накладываются следующие ограничения:

  1. Функция не может иметь то же имя, что у существующей функции.
  2. Имя функции может содержать только буквы, цифры и символы подчеркивания.
  3. Имя функции не может начинаться с цифры.

Многие языки программирования допускают повторное использование имен функций. Это свойство называется перегрузкой функций. Однако РНР не поддерживает перегрузку функций, поэтому функция не может иметь имя, совпадающее с именем любой встроенной или существующей определяемой пользователем функции.

Пример описания функции, принимающей в аргументе один параметр $x и возвращающей значение sin($x)/cos($x):

  1. <?php
  2. function tangens($x)
  3. {
  4. return sin($x)/cos($x);
  5. }
  6. ?>

Часто требуется передавать в функции один, два и более параметров. В примере в функцию передаётся один параметр, имеющий формальное имя x. Это означает что внутри описания функции к этому параметру следует обращаться по имени $x. При этом фактический параметр при вызове может иметь иное имя, например print tangens($z), или быть литералом, например print tangens(0). Ниже приведен пример функции, которая требует передачи в нее параметра.

Функции могут иметь несколько параметров и необязательные параметры. Усовершенствуем функцию tangens(), добавив ей необязательный параметр radian, который по умолчанию (если его не указывать), считается равным 1 и означает что расчёты ведутся в радианах; в противном случае расчёты ведутся в градусах.

  1. <?php
  2. function tangens($x, $radian=1)
  3. {
  4. if ($radian == 1){
  5. return sin($x)/cos($x);
  6. }else{
  7. $radian=$x * pi / 180;
  8. return sin($radian)/cos($radian);
  9. }
  10. }
  11. ?>

Первый параметр этой функции обязательный, а второй необязательный

Из общего курса программирования Вам известно, что параметры могут передаваться по значению и по ссылке. В PHP чтобы для передачи параметра по ссылке используется знак &. Рассмотрим на примере

  1. <?php
  2. function f1($x){
  3. $x++;
  4. }
  5.  
  6. function f2(&$x){
  7. $x++;
  8. }
  9.  
  10. $x = 1;
  11. f1($x);
  12. print $x; // Выведет 1
  13. f2($x);
  14. print $x; // Выведет 2
  15. ?>

Баннер SGU.RU