Анонсы:
|
PHP. Урок 4 ФункцииУрок 4. ФункцииВ этой главе вы узнаете, как вынести часто используемую часть кода в отдельную функцию. Применение функцийФункция используется для того, чтобы заменить часть кода на процедуру, которую можно вызвать одной инструкцией. В PHP есть много готовых функций для выполнения различных задач. Некоторые встроены в PHP, а более специализированные доступны, только если установить соответствующее расширение при установке PHP. Раньше рассматривалось применение функции date для того, чтобы сгенерировать текущую дату. Рассмотрим внимательно пример из урока 1, “Знакомство с PHP”. Он выглядит так: В электронном справочнике по PHP приводится следующий прототип этой функции: Это значит что функции date передается строчный аргумент format и необязательный целый аргумент timestamp. Функция возвращает строчный тип. В этом примере передается j F Y как форматирующий аргумент, но нет аргумента timestamp. Команда echo выводит результат действия функции. Определение функцииКроме встроенных функций, PHP позволяет задавать собственные. Такой механизм имеет ряд преимуществ. Сокращается количество кода, который нужно набирать, повышается гибкость и понятность сценария. Если нужно изменить поведение функции, изменения вносятся в месте определения функции. А не в местах, где используется код. В следующем примере показывается, как задать и использовать функцию в PHP: Ключевое слово function определяет функцию add_tax, которая выполняет код в фигурных скобках (тело функции). Тело функции обязательно надо заключать в фигурные скобки. Определение функции add_tax требует одного аргумента $amount, который заключен в круглые скобки. Переменная $amount содержит переданный аргумент и доступна в теле функции. В первой строке кода производится обычное перемножение $amount на 1.09. Это эквивалентно добавлению 9% к начальному значению. Результат сохраняется в переменной $total. За ключевым словом return становится значение, которое функция возвращает, как результат. После запуска этого сценария на выходе получим: Этот пример показывает, как использовать функцию в разных местах Web-страницы. Например, нужно вывести список товаров, которые есть на складе. Для этого вызывается функция, чтобы показать цену с учетом налога. Если процент налога изменяется, достаточно поменять коэффициент в функции add_tax, и все цены автоматически изменятся на необходимую величину. Аргументы и возвращаемые значенияПри вызове функции в круглых скобках указывается список аргументов. Если аргументов больше одного, нужно разделять их запятыми. В некоторых функциях аргументов вообще может не быть, но круглые скобки все равно ставятся после имени функции. С помощью встроенной функции phpinfo можно получить информацию о конфигурации и модулях PHP. Эта функция не требует аргументов, поэтому ее можно вызывать так: Если создать такой сценарий и зайти на соответствующую страницу, на экране появится системная информация и настройка PHP. Удачный и неудачный результат выполненияФункция генерирует собственный вывод, поэтому не нужно ставить echo. Правда, из-за этого нельзя присвоить генерируемый вывод переменной. Кроме того, phpinfo всегда возвращает 1. Возвращение True или False. Функции, которые не возвращают результат, используют определенный код, чтобы известить об успешности выполнения операции. Обычно нулевое значение (FALSE) сигнализирует о неудаче, а ненулевое (TRUE) свидетельствует об успешном завершении операции. В следующем примере с помощью функции mail производится попытка отправить сообщение по электронной почте из PHP-сценария. Первые три аргумента задают адрес получателя, тему и тело сообщения. Оператор if использует возвращаемое значение mail, чтобы определить успешность отправления письма: Если Web-сервер не настроен для отправки писем или при отправке письма случилась ошибка, функция mail возвращает ноль, что сигнализирует о проблеме. Ненулевое значение свидетельствует об удачном отправлении письма. Необязательные аргументыФункция mail использует несколько аргументов: адресат, тема и сообщение. Это обязательные параметры. Прототип функции mail задает еще четвертый необязательный параметр. В нем можно задать дополнительные заголовки письма. Вызвав mail с двумя аргументами, получим предупреждение. Например, сценарий содержащий строку сгенерирует примерно такое предупреждение: А эти примеры mail корректны: Для того чтобы задать несколько аргументов в функции, нужно в ее определении перечислить все имена переменных, разделив их запятой. Чтобы задать необязательный аргумент, нужно присвоить ему значение в этом списке, как при обычном присваивании. Следующий пример является вариацией функции add_tax с двумя аргументами – чистой стоимостью и процентом налога. По умолчанию $rate имеет значение 10 и является необязательным аргументом: При использовании этой функции оба приведенных ниже вызова, корректны: В первом примере используется значение по умолчанию 10%, а во втором задается значение 9%. Этот вариант работает так же, как и первый пример функции add_tax. Необязательные аргументы. Все обязательные значения должны идти первыми, а необязательные аргументы должны располагаться в конце списка аргументов. Иначе PHP не сможет распознать, какие аргументы передаются в функцию. Область видимости переменныхЗначение надо передавать в функцию через аргументы, т.к. существует область видимости переменных. Это правила, которые определяют, в каких областях сценария можно получить доступ к переменной. Основное правило гласит, что переменные, определенные в главном теле сценария, недоступны внутри функции. Аналогично, внутренние переменные функции не видны в главной части сценария. Области видимости. Переменные, доступные внутри функции, называются локальными. Нелокальные переменные называются глобальными. Когда вызывается функция add_tax, вычисляется значение переменной $total и возвращается как результат. Однако даже после вызова add_tax локальная переменная $total не определена за пределами этой функции. В примере ниже сделана попытка вывести значение глобальной переменной внутри функции: Этот сценарий не выводит ничего, потому что $value не определено в локальной области. Чтобы получить доступ к глобальным переменным внутри функции, используется ключевое слово global в начале тела функции. Таким образом изменяется область видимости переменной. Теперь ее можно изменять и извлекать значения. В коде ниже приводится пример: Значение $value теперь изменяется внутри функции, и на выходе получаем следующее: Использование библиотечных файловЕсли создать удобную функцию, может возникнуть ситуация, что она понадобится в другом сценарии. Не стоит ее копировать туда, лучше создать специальный библиотечный файл. Теперь функция будет храниться и изменяться в одном месте. Перед тем как продолжить, нужно создать библиотечный файл с именем tax.php и поместить туда функции add_tax и add_tax_rate. Другого PHP-кода в нем быть не должно. Использование библиотечных файлов. PHP-код в библиотечных файлах нужно заключать внутрь <?php тегов, как и в обычном сценарии. В противном случае при подключении к сценарию содержимое будет отображаться как HTML-код. Подключение библиотечных файловЧтобы связать внешний библиотечный файл с другим сценарием, нужно использовать ключевое слово include. В примере ниже подключается файл tax.php, и теперь функцию add_tax можно вызвать из сценария: Чтобы подключить библиотечный файл только один раз, используется ключевое слово include_once. Если попытаться определить функцию с одинаковым именем, возникнет ошибка. Оператор include_once позволяет избежать этого, если файл уже подключен в другом библиотечном файле. Очень удобно иметь всего один библиотечный файл, который подключает несколько других, содержащих набор нужных функций, вместо одного огромного библиотечного файла. require. Инструкции require и require_once очень похожи на include и include_once, но ведут себя по разному. В случае ошибки include выводит сообщение об ошибке, но сценарий продолжает выполняться. При неудаче в операторе require выполнение сценария прекращается. РезюмеВ этом уроке вы научились использовать функции, чтобы повысить модульность кода. В следующем уроке вы узнаете о том, как работать с числовыми данными в PHP. |
Погода в Рудне на 13 Окт 2024 г. 704 - Вьетнамских донгов - 1 |