HTML, Excel, Word, SEOPHP курс для чайников ⇒ Функции

PHP для "чайников"

Инструменты
Выбираем IDE
Выбираем Web-сервер
Выбираем СУБД
Структура языка PHP
Первый шаг
Синтаксис
Типы данных
Переменные и константы
Операторы
Выражения
Управляющие структуры
Функции
Классы
Исключения
Ошибки
Массивы
Глобальные массивы
Cookies
Сессии
Загрузка файлов
Работа с файлами
Работа с файлами на диске
Работа с данными в файле
Пример управления файлами
Работа с базами данных
Подключение
Анализ результатов
Выполнение запросов
Отключение
Пример: отслеживание пользователей
Работа в сети
Отправка почты
Безопасность
HTTP-аутентификация
Защита логином и паролем
Автоматизация
Регулярные выражения в PHP
Интеграция
PHP и JavaScript



PHP: Функции


Автор: Артемьев Сергей Игоревич
ICQ: 438856621
email: _spin_@bk.ru

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


Функции бывают пользовательские и системные. Пользовательские функции (как следует из названия) программист пишет самостоятельно. Системные функции всегда доступны из любого места скрипта и объявлять их не надо.


Пользоваться функциями очень просто. Объявляется функция следующим образом:

<?php
    function mySampleFunction($parameter1, $parameter2)
    {
        // набор выражений (тело функции)
        // return возвращаемое_значение
    }
?>

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

<?php
    // Функция выводит сообщение пользователя с
    // соответствующим описанием в зависимости от
    // важности ($severity).
    // Возвращает пустое значение
    function showError($severity, $error)
    {
        switch($severity)
        {
            case 0:
                echo 'Сообщение: ';
                break;
            case 1:
                echo 'Предупреждение: ';
                break;
            case 2:
                echo 'Ошибка: ';
                break;
            case 3:
                echo 'Критическая ошибка: ';
                break;
            default:
                echo 'Неизвестно: ';
                break;
        }
        echo $error . "<br />\n";
    }
?>

Теперь в любом месте скрипта можно написать

<?php
    showError(0, 'Функция работает');
?>

и в браузер будет выведено

    Сообщение: Функция работает

Рассмотрим более интересный вариант применения - функцию преобразования данных. Например, у нас есть список, содержащий полные имена, фамилии и отчества сотрудников. Нам для составления отчёта надо преобразовать полное ФИО к формату фамилии с инициалами, т.е. преобразовать "Иванов Александр Владимирович" в "Иванов А.В.".

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

<?php

    /*
        $f - фамилия
        $i - имя
        $o - отчество
    */
    function convertFIO($f, $i, $o)
    {
        if(!isset($f) || !isset($i) || !isset($o))
            return false;
        // Присваиваем результату фамилию
        $result = $f;
        // добавляем первый символ имени и точку
        $result .= substr($i, 0, 1) . '.';
        // добавляем первый символ отчества и точку
        $result .= substr($o, 0, 1) . '.';
        // Позвращаем результат
        return $result;
    }

?>

а код для вызова функции будет выглядеть так:

<?php

  // считываем данные из файла
  $fulls = file('fullnames.txt');
  $shorts = array();

  // обрабатываем каждую строку исходного файла
  foreach ($fulls as $value)
  {
      // разделяем строку на фамили, имя, отчество
      list($f, $i, $o) = split(' ', $value);

      // получаем сокращённую форму
      $fio = convertFIO($f, $i, $o) . "\n";
      // если функция не вернула false
      // добавляем результат в выходной массив
      if($fio)
          $shorts []= $fio;
  }

  // сохраняем полученные данные в файл
  file_put_contents('shortnames.txt', implode('', $sorts));

?>

При использовании функций необходимо помнить следующее:

  1. В теле функции используются копии параметров, поэтому все изменения переменных будут потеряны привыходе из функции. Мы уже рассматривали такой пример при изучении областей видимости переменных.
  2. Если параметр должен быть изменён в функции - необходимо передавать его по ссылке, т.е. в описании функции надо перед именем параметра добавить "&": function func($p1, &$p2) { }
  3. В старых версиях PHP функция должна была быть объявлена до первого использования, но в PHP версии 4.3 и выше порядок объявления и использования функции может быть любым.

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



В начало страницы



В начало страницы