Без темы
<<  Физиологические основы психических функций человека Функции в языке СИ  >>
Функции в РНР
Функции в РНР
Определение функции
Определение функции
Определение и вызов функций
Определение и вызов функций
Пример простой функции
Пример простой функции
Пример функции с параметром
Пример функции с параметром
Вложенные функции
Вложенные функции
Пример вложенных функций
Пример вложенных функций
Возврат значений из функции
Возврат значений из функции
Пример функции для вычисления налога
Пример функции для вычисления налога
Возврат значений из функции
Возврат значений из функции
Пример функции для сравнения значений переменных
Пример функции для сравнения значений переменных
Возврат значений из функции
Возврат значений из функции
Возвращение функцией нескольких величин
Возвращение функцией нескольких величин
Рекурсивные функции
Рекурсивные функции
Функции-переменные
Функции-переменные
Пример функции-переменной
Пример функции-переменной
Построение библиотек функций
Построение библиотек функций
Построение библиотек функций
Построение библиотек функций
Пример включения библиотеки в сценарий
Пример включения библиотеки в сценарий
Файловые компоненты (шаблоны)
Файловые компоненты (шаблоны)
Функция include( )
Функция include( )
Функция include_once( )
Функция include_once( )
Функция require( )
Функция require( )
Функция require_once( )
Функция require_once( )

Презентация: «Функции в РНР». Автор: Sokolova V.. Файл: «Функции в РНР.ppt». Размер zip-архива: 77 КБ.

Функции в РНР

содержание презентации «Функции в РНР.ppt»
СлайдТекст
1 Функции в РНР

Функции в РНР

2 Определение функции

Определение функции

Функцией называется фрагмент программного кода, обладающий уникальным именем и предназначенный для решения конкретной задачи. Функция в PHP вызывается по имени в разных частях программы, что позволяет многократно выполнять фрагмент с указанным именем. Преимущество такого решения заключается в том, что блок кода пишется всего один раз, а затем легко модифицируется по мере необходимости. Функции могут создаваться в любой части программы РНР, однако по соображениям структурной организации кода удобнее разместить все функции, используемые сценарием, в самом начале сценарного файла. Существует и другой способ, заметно повышающий эффективность программирования и способствующий многократному использованию кода, – выделение функций в отдельный файл (называемый библиотекой). Библиотеки удобны тем, что их функции можно использовать в разных приложениях, не создавая лишних копий и не рискуя допустить ошибки в процессе копирования.

3 Определение и вызов функций

Определение и вызов функций

Определение функции обычно состоит из трех частей: имени функции; круглых скобок, в которых перечисляются необязательные входные параметры, разделенные запятыми; тела функции, заключенного в фигурные скобки. Обобщенный синтаксис функций в РНР выглядит так: function имя_функции ([$параметр 1, $параметр 2,…,$параметр n]) { тело функции } В РНР указывать тип входных параметров не обязательно. Хотя такой подход имеет свои преимущества, следует помнить, что механизм РНР не проверяет аргументы на соответствие тем типам, которые должны обрабатываться функцией. Случайные ошибки в использовании входных параметров могут привести к неожиданным последствиям (чтобы убедиться в том, что параметр относится к нужному типу, можно проверить его стандартной функцией gettype( )).

4 Пример простой функции

Пример простой функции

Рассмотрим пример использования функции: нужно создать функцию для вывода лицензионной информации на веб-странице: function display_copyright() { print "Copyright &copy 2001. PHP Recipes. All Rights Reserved."; } Если веб-сайт состоит из нескольких страниц, достаточно вызвать эту функцию в конце каждой страницы – и не придется заново переписывать один и тот же текст, а когда наступит 2002 год, одно простое изменение текста, выводимого этой функцией, приведет к автоматическому обновлению всех страниц. Если бы не преимущества функционального программирования, пришлось бы вручную редактировать все страницы, на которых выводится данная информация.

5 Пример функции с параметром

Пример функции с параметром

Рассмотрим разновидность функции display_copyright(), которой при вызове передается параметр. Предположим, пользователь отвечает за администрирование нескольких веб-сайтов, каждому из которых присвоено отдельное имя. На каждом сайте имеется собственный административный сценарий с несколькими переменными, относящимися к этому сайту; к их числу принадлежит переменная $site_name с именем сайта. В этом случае функцию display_copyright() можно записать следующим образом: function display_copyright($site_name) { print "Copyright &copy 2001. $site_name. All Rights Reserved."; } Переменная $site_name, значение которой присваивается за пределами display_copyright(), передается функции в качестве параметра. Переданное значение можно использовать и модифицировать в любом месте функции, однако любые изменения будут действовать лишь внутри этой функции. Однако, специальные ключевые слова позволяют сделать так, чтобы изменения параметров распространялись и за пределы display_copyright().

6 Вложенные функции

Вложенные функции

Функции можно вызывать внутри других функций, что увеличивает степень модульности приложения и упрощает сопровождение программы. В примере, описанном выше, можно полностью избавиться от необходимости модификации даты. Для этого достаточно включить в display_copyright() вызов стандартной функции РНР date( ): function display_copyright($site_name) { print "Copyright &copy". date("Y"). "$site_name. All Rights Reserved."; } Параметр Y функции date( ) указывает, что возвращаемое значение представляет собой текущий год, отформатированный в виде четырех цифр. Если системная дата установлена правильно, РНР при каждом выполнении сценария будет выводить год. Также допускается объявление функций внутри других функций. Тем не менее, вложенное объявление еще не делает функцию «защищенной», то есть не ограничивает возможность ее вызова той функцией, в которой она была объявлена. Более того, вложенная функция не наследует параметров родительской функции; параметры должны передаваться ей точно так же, как и любой другой функции. Хотя вложенные функции не защищены от вызова из других точек сценария, они не могут вызываться до вызова своей родительской функции. При попытке вызвать вложенную функцию раньше вызова родительской функции выводится сообщение об ошибке.

7 Пример вложенных функций

Пример вложенных функций

function display_footer($site_name) { function display_copyright($site_name) { print "Copyright &сору". date("Y"). "$site_name. All Rights Reserved."; } print "<center> <a href = \"\">home</a> | <a href = \"\">news</a> | <a href = \"\">events</a><br>; <a href = \"\">tutorials</a> | <a href = \"\">about</a> | <a href = \"\">contact us</a><br>"; display_copyright($site_name); } print "<center>"; $site_name = "PHP Recipes"; display_footer($site_name); display_copyright($site_name); // Сценарий выводит следующий результат: home | news | events tutorials | about | contact us Copyright © 2001. PHP Recipes. All Rights Reserved.

8 Возврат значений из функции

Возврат значений из функции

По завершении работы функции часто бывает полезно вернуть некоторое значение, для чего результат вызова функции обычно присваивается некоторой переменной. Функции могут возвращать значения любых типов, в том числе массивы и списки. Пример: функция calculate_cost( ) вычисляет налог с заданной суммы и возвращает общую сумму вместе с налогом. Краткое описание алгоритма расчетов: Перед вызовом функции задать значения переменных: $price (цена товара) и $tax (налоговая ставка). Объявить функцию calculate_cost( ). При вызове функция получает два параметра: налоговую ставку и цену товара. Вычислить цену с учетом налога и вернуть ее командой return. Вызвать calculate_cost() и присвоить значение, возвращенное функцией, переменной $total_cost. Вывести соответствующее сообщение.

9 Пример функции для вычисления налога

Пример функции для вычисления налога

$price = 24.99; $tax = .06; function calculate_cost($tax, $price) { $sales_tax = $tax; return $price + ($price * $sales_tax); } // Обратите внимание на возврат значения функцией calculate_cost(). $total_cost = calculate_cost ($tax, $price); // Округлить цену до двух десятичных цифр. $total_cost = round($total_cost, 2); print "Total cost: $total_cost"; // Результат вычислений: Total cost: 26.49

10 Возврат значений из функции

Возврат значений из функции

Существует и другой способ использования возвращаемых значений, при котором вызов функции включается прямо в условную/циклическую команду. Пример функции, в которой сумма счета пользователя сравнивается с предельным размером кредита. Краткое описание алгоритма расчетов: Объявить функцию check_limit( ), которая при вызове получает два параметра. Первый параметр, $total_cost, определяет общую сумму счета, накопленную пользователем до настоящего момента. Второй параметр, $credit_limit, определяет максимальную сумму, которую может потратить пользователь. Если накопленная сумма счета превышает предельный размер кредита, функция возвращает ложное значение (0). Если условие команды if оказывается ложным, работа функции еще не завершена. В этом случае общая сумма не превышает предельного размера кредита, поэтому функция должна вернуть логическую истину. Вызвать функцию check_limit( ) в условии команды if. Проверить, какое значение было возвращено при вызове – истинное или ложное. В зависимости от результата проверки выполняется то или иное действие. Если при вызове check_limit( ) было получено значение TRUE, предлагаем пользователю продолжить покупку. В противном случае, пользователь информируется о превышении суммы кредита.

11 Пример функции для сравнения значений переменных

Пример функции для сравнения значений переменных

$cost = 1456.22; $limit = 1000.00; function check_limit($total_cost, $credit_limit) { if ($total_cost > $credit_limit): return 0; endif; return 1; } if (check_limit($cost, $limit)): print "Покупка возможна"; else: print "Сумма покупки должна быть менее "."$limit"."!"; endif; // При выполнении кода будет выведено сообщение об ошибке, поскольку значение $cost превышает $limit: Сумма покупки должна быть менее 1000!

12 Возврат значений из функции

Возврат значений из функции

Функция также может возвращать сразу несколько значений при помощи списка. Пример функции, которая бы возвращала три лучших года для указанного сорта напитка. Краткое описание алгоритма: Объявить функцию best_years( ), вызываемую с одним параметром. Параметр $label определяет сорт напитка, для которого пользователь хотел бы узнать три рекомендуемых года. Объявить два массива, $merlot и $zinfandel. В каждом массиве хранится три рекомендуемых года для соответствующего сорта. Написать команду return, которая бы использовала особые возможности переменных. Выражение $$label сначала интерпретирует переменную $label, а затем интерпретирует полученное значение как имя другой переменной. В настоящем примере массив merlot возвращается в виде списка, и каждый возвращаемый год занимает свою позицию в списке, для которого вызывалась функция. Вывести сообщение с информацией о рекомендуемых годах.

13 Возвращение функцией нескольких величин

Возвращение функцией нескольких величин

// Сорт напитка, для которого выводятся лучшие годы $label = "merlot"; // Функция использует массивы и "переменную в переменной" для возвращения нескольких значений. function best_years($label) { $merlot = array("1987", "1983", "1977"); $zinfandel = array("1992", "1990", "1989"); return $$label; } // Функция list( ) используется для получения возвращаемых значений. list ($yr_one, $yr_two, $yr_three) = best_years($label); print "$label had three particularly remarkable years: $yr_one, $yr_two and $yr_three."; // Программа выводит следующий результат: merlot has three particularly remarkable years: 1987, 1983 and 1977.

14 Рекурсивные функции

Рекурсивные функции

Рекурсивная функция – функция, которая многократно вызывает сама себя, пока не будет выполнено некоторое условие. Особенно часто они используются при выполнении повторяющихся действий – например, при поиске в файлах/массивах и построении графических изображений (например, фракталов). Пример рекурсивной функции, которая суммирует все целые числа от 1 до 10. function summation ($count) { if ($count != 0) : return $count + summation($count-1); endif; } $sum = summation(10); print "Summation = $sum"; // Результат вычислений: Summation = 55. Если функция вызывается достаточно часто, рекурсия делает программу более эффективной. Тем не менее, при использовании рекурсии необходима осторожность, поскольку ошибки могут привести к зацикливанию программы.

15 Функции-переменные

Функции-переменные

Функции-переменные (variable functions) – динамические вызовы функций, имена которых определяются во время выполнения программы. Они значительно сокращают объем и сложность программного кода, а также часто снимают необходимость в условных командах if. Вызов функции-переменной представляет собой имя переменной, за которым следует пара круглых скобок. В круглых скобках могут перечисляться параметры (однако присутствие параметров не обязательно). Обобщенный синтаксис функции-переменной: $имя_функции( ); Пример программы, которая выводит разную информацию (приветствие) в зависимости от языка, выбранного пользователем. Краткое описание алгоритма : Создать сообщение для итальянского языка в функции с именем italian. Создать сообщение для английского языка в функции с именем english. Передать информацию о выбранном языке в сценарий, присвоив значение переменной $language. Переменная $language используется для выполнения функции-переменной (в приведенном примере – italian()).

16 Пример функции-переменной

Пример функции-переменной

// Приветствие на итальянском языке function italian( ) { " print "Benvenuti al PHP Recipes."; } // Приветствие на английском языке function english( ) { print "Welcome to PHP Recipes."; } // Выбрать итальянский язык $language = "italian": // Выполнить функцию-переменную $language( ); Листинг демонстрирует интересную концепцию функций-переменных и наглядно показывает, что функции-переменные способствуют уменьшению объема программного кода. Если бы не эта возможность, функцию пришлось бы выбирать командой if или switch, что привело бы к заметному увеличению объема программного кода и риску появления дополнительных ошибок при кодировании.

17 Построение библиотек функций

Построение библиотек функций

Библиотеки функций – одно из самых эффективных средств экономии времени при построении приложений. Например, существует серия функций для сортировки массива. Вероятно, эти функции будут неоднократно использоваться в разных приложениях. Вместо того чтобы постоянно переписывать эти функции в новый сценарий или копировать их через текстовый буфер, гораздо удобнее разместить все функции сортировки в отдельном файле и присвоить ему легко узнаваемое имя (например, array_sorting.inc). <? // Файл: array_sorting.inc // Назначение: библиотека функций для сортировки массивов. function merge_sort($array, $tmparray, $right, $left) { ... function bubble_sort($array, $n) { ... } function quicksort ($array, $right, $left) { ... } ?> Библиотека array_sorting.inc служит накопителем для всех функций сортировки. Это удобно, поскольку функции фактически группируются по своему назначению и при необходимости можно легко найти нужную функцию. Как видно из кода, в начало библиотеки обычно включается заголовок из нескольких строк комментария, чтобы при открытии файла библиотеки можно было сразу получить краткую сводку его содержимого.

18 Построение библиотек функций

Построение библиотек функций

После создания собственной библиотеки функций можно включить ее в сценарий при помощи команд РНР include( ) и require( ), в результате чего все функции библиотеки становятся доступными. В общем виде синтаксис этих команд выглядит так: include(путь/имя_файла); require(путь/имя_файла); Также существует альтернативный вариант, где путь определяет относительный или абсолютный путь к файлу: include "путь/имя_файла"; require "путь/имя_файла";

19 Пример включения библиотеки в сценарий

Пример включения библиотеки в сценарий

// Предполагается, что библиотека array_sorting.inc находится в одном каталоге со сценарием. include("array_sorting.inc"); // Теперь можно использовать любые функции из array_sorting.inc $some_array = array (50, 42, 35, 46); // Использовать функцию bubble_sort() $sorted_array = bubble_sort($some_array, 1);

20 Файловые компоненты (шаблоны)

Файловые компоненты (шаблоны)

Шаблоном называется часть веб-документа, которую нужно использовать в нескольких страницах. С увеличением масштабов сайта значение шаблонов возрастает, поскольку они позволяют легко и быстро проводить модификации на уровне целого сайта. Как правило, общие фрагменты содержания/кода (то есть шаблоны) сохраняются в отдельных файлах. При построении веб-документа нужно добавить эти файлы в соответствующие места страницы. В РНР существуют четыре функции для включения файлов в веб-сценарии: include( ); include_once( ); require( ); require_once( ).

21 Функция include( )

Функция include( )

Функция include( ) включает содержимое файла в сценарий во время исполнения программы. Синтаксис функции: include (file файл) Данную функцию можно выполнять условно. Если функция includeO используется в условной команде, то она должна быть заключена в фигурные скобки или в альтернативные ограничители. Например, если вызов функции включен в блок команды if, то файл включается в программу лишь в том случае, если условие if истинно. Неправильное использование include( ): if (some_conditional) include ('text91a.txt'); else include ('text91b.txt'); Правильное использование include( ): if (some_conditional) : include ('text91a.txt'); else: include ('text91b.txt'); endif; Весь код РНР во включаемом файле обязательно заключается в теги РНР. Не стоит полагать, что простое сохранение команды РНР в файле обеспечит ее правильную обработку: print "this is an invalid include file"; Вместо этого необходимо заключить команду в соответствующие теги, как показывает следующий пример: <? print "this is an invalid include file"; ?>

22 Функция include_once( )

Функция include_once( )

Функция include_once( ) делает то же, что и include( ), за одним исключением: прежде чем включать файл в программу, она проверяет, не был ли он включен ранее. Если файл уже был включен, вызов include_once( ) игнорируется, а если нет – происходит стандартное включение файла. Во всем остальном include_once( ) ничем не отличается от include( ). Синтаксис функции: include_once (file файл)

23 Функция require( )

Функция require( )

Функция require( ) также включает шаблон в тот файл, в котором находится вызов require( ), но файл, определяемый параметром require( ), включается в сценарий независимо от местонахождения require( ) в сценарии. Например, при вызове requirе( ) в блоке if при ложном условии файл все равно будет включен в сценарий! Синтаксис функции: require (file файл) Во многих ситуациях бывает удобно создать файл с переменными и другой информацией, которая используется в масштабах сайта, и затем подключать его по мере необходимости. Пример инициализационного файла init.tpl: <? $site_title = "РНР Recipes"; $contact_email = "test@mail.ru"; $contact_name = "OSU"; ?> Использование файла init.tpl: <? require ('init.tpl ');?> <html> <head> <title><? print $site_title; ?></title> </head> <body> <? print "Welcome to $site_title. For questions, contact <a href = \"mai1 to:$contact_email\">$contact_name</a>."; ?> </body> </html>

24 Функция require_once( )

Функция require_once( )

С увеличением размеров сайта может оказаться, что некоторые файлы включаются в сценарий по несколько раз. Иногда это не вызывает проблем, но в некоторых случаях повторное включение файла приводит к сбросу значений изменившихся переменных. Если во включаемом файле определяются функции, могут возникнуть конфликты имен. Функция require_once( ) гарантирует, что файл будет включаться в сценарий всего один раз. После вызова requirе_оnсе( ) все дальнейшие попытки включения того же файла игнорируются. Синтаксис функции: require_once(file файл) Если не считать дополнительной проверки, в остальном эта функция аналогична require( ).

«Функции в РНР»
http://900igr.net/prezentacija/algebra/funktsii-v-rnr-246177.html
cсылка на страницу
Урок

Алгебра

35 тем
Слайды