Скачать презентацию Мировые информационные ресурсы Функциональное программирование в РНР Лекция Скачать презентацию Мировые информационные ресурсы Функциональное программирование в РНР Лекция

МИР_05_PHP.ppt

  • Количество слайдов: 24

Мировые информационные ресурсы Функциональное программирование в РНР Лекция 5. Мировые информационные ресурсы Функциональное программирование в РНР Лекция 5.

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

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

Определение функции Пример: function get_sum($var, $var 1) { $sum = $var + $var 1; Определение функции Пример: function get_sum($var, $var 1) { $sum = $var + $var 1; echo $sum; } get_sum(5, 2); // выводится 7 Передача параметра по ссылке: function get_sum(&$var) // аргумент передается по ссылке { $var = $var + 5; return$var; } $new_var = 20; echo(get_sum($new_var)); // выводится 25 echo(" $new_var"); // выводится 25 4

Вложенные функции Допускается объявление функций внутри других функций. Вложенные функции не могут вызываться до Вложенные функции Допускается объявление функций внутри других функций. Вложенные функции не могут вызываться до вызова своей родительской функции. Пример: function display_footer($site_name) { function display_copyright($site_name) { print "Copyright &сору". date("Y"). $site_name. "All Rights Reserved"; } print "

"; print "Главная страница | Примеры программ "; print "| Новости сайта Учебники "; print "| О проекте | Контакты "; display_copyright($site_name); print "
"; } 5

Вложенные функции $site_name = Вложенные функции $site_name = "Программирование на PHP"; display_footer($site_name); display_copyright($site_name); //display_copyright( ) можно вызвать и за пределами display_footer( ). Результат: Главная страница | Примеры программ | Новости сайта Учебники | О проекте | Контакты Copyright © 2008 Программирование на PHP. All Rights Reserved 6

функции Функции могут возвращать значения любых типов, в том числе массивы и списки. Функции, функции Функции могут возвращать значения любых типов, в том числе массивы и списки. Функции, не возвращающие значений, также называют процедурами. Пример: $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 7

Вызов функции в условную/циклическую команду Пример: сравнение текущей суммы счета пользователя с предельным размером Вызов функции в условную/циклическую команду Пример: сравнение текущей суммы счета пользователя с предельным размером кредита $cost = 1456. 22; $limit = 1000. 00; function check_limit($total_cost, $credit_limit) // $total_cost - общая сумма счета, накопленная пользователем до настоящего момента. // $credit_limit - максимальная сумма, которую может потратить пользователь. if ($total_cost > $credit_limit): # если накопленная сумма счета превышает предельный размер кредита return 0; endif; return 1; } 8

Вызов функции в условную/циклическую команду if (check_limit($cost, $limit)) : print Вызов функции в условную/циклическую команду if (check_limit($cost, $limit)) : print "Продолжить закупки"; else : print "Ваш кредит превышен, предел $". $limit. "!"; endif; 9

Возврат значений при помощи списка Пример: // Сорт вина, для которого выводятся лучшие годы Возврат значений при помощи списка Пример: // Сорт вина, для которого выводятся лучшие годы производства $label = "merlot"; // Функция использует массивы и "переменную в переменной" для возвращения значений. function best_years($label) { $merlot = array("1987", "1983", "1977"); $zinfandel = array("1992", "1990", "1989"); return $$label; // Выражение $$label сначала интерпретирует переменную $label, // затем интерпретирует полученное значение как имя другой переменной. } 10

Возврат значений при помощи списка // Функция list( ) используется получения возвращаемых значений. list Возврат значений при помощи списка // Функция list( ) используется получения возвращаемых значений. list ($yr_one, $yr_two, $yr_three) = best_years($label); // Массив merlot возвращается в виде списка, // каждый возвращаемый год занимает свою позицию в списке print "Для сорта $label рекомендуемые годы производства: $yr_one, $yr_two и $yr_three. "; Результат: Для сорта merlot рекомендуемые годы производства: 1987, 1983 и 1977. 11

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

 Функции-переменные Пример: приветственные сообщения для разноязычных пользователей. // Создать сообщение для английского языка Функции-переменные Пример: приветственные сообщения для разноязычных пользователей. // Создать сообщение для английского языка в функции. function english( ) { print "Welcome to PHP site. "; } // Создать сообщение для итальянского языка в функции. function russian( ) { print "Добро пожаловать на сайт PHP. "; } // Выбрать русский язык $language = "russian": // переменная $language используется для выполнения функции -переменной. // Выполнить функцию-переменную $language( ); 13

Построение библиотек функций Пример: <? // Файл: array_sorting. inc // Назначение: библиотека функций для Построение библиотек функций Пример: 14

Подключение библиотеки Функция include( ) Синтаксис: include(путь/имя_файла); или include Подключение библиотеки Функция include( ) Синтаксис: include(путь/имя_файла); или include "путь/имя_файла"; Путь определяет относительный или абсолютный путь к файлу. Если функция include() используется в условной команде, то она должна быть заключена в фигурные скобки или в альтернативные ограничители. Функция include_once( ) - делает то же, что и include( ), за одним исключением: прежде чем включать файл в программу, она проверяет, не был ли он включен ранее. Если файл уже был включен, вызов include_once( ) игнорируется, а если нет — происходит стандартное 15 включение файла.

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

Подключение библиотеки Различие между функциями require( ) и include( ) Файл, определяемый параметром require( Подключение библиотеки Различие между функциями require( ) и include( ) Файл, определяемый параметром require( ), включается в сценарий независимо от местонахождения require( ) в сценарии. Например, при вызове requiге( ) в блоке if при ложном условии файл все равно будет включен в сценарий. Если вызов функции include( ) включен в блок команды if, то файл включается в программу лишь в том случае, если условие if истинно. 17

Подключение библиотеки Пример включения библиотеки: // Предполагается, что библиотека array_sorting. inc // находится в Подключение библиотеки Пример включения библиотеки: // Предполагается, что библиотека 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); 18

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

Локальные переменные Пример: $х = 4; function assignx () { $х = 0; print Локальные переменные Пример: $х = 4; function assignx () { $х = 0; print "$x inside function is $x. "; } assignx(); print "$x outside of function is $x. "; Результат: $х inside function is 0. $х outside of function is 4. 20

Глобальные переменные - доступны в любой точке программы. - чтобы изменить значение глобальной переменной, Глобальные переменные - доступны в любой точке программы. - чтобы изменить значение глобальной переменной, необходимо специально объявить ее как глобальную в соответствующей функции. Для этого перед именем переменной ставится ключевое слово GLOBAL. Пример: $somevar = 15; function addit() { GLOBAL $somevar; $somevar++; print "Somevar is $somevar"; } addit(); Вывод: значение $somevar, равное 16. Без строки GLOBAL $somevar; будет выведено значение 1. 21

Глобальные переменные Альтернативный способ объявления глобальных переменных: использование массива РНР $GLOBALS( ). Пример: $somevar Глобальные переменные Альтернативный способ объявления глобальных переменных: использование массива РНР $GLOBALS( ). Пример: $somevar = 15; function addit() { $GLOBALS["somevar"]; $somevar++; } addit(); print "Somevar is $somevar"; 22

Статические переменные - сохраняют свое значение при повторном вызове. - для объявления статической переменной Статические переменные - сохраняют свое значение при повторном вызове. - для объявления статической переменной перед ее именем ставится ключевое слово STATIC: STATIC $somevar; Пример: function keep_track() { STATIC $count = 0; $count++; print $count; print " "; } keep_track(); 23

Статические переменные - сохраняют свое значение при повторном вызове. - для объявления статической переменной Статические переменные - сохраняют свое значение при повторном вызове. - для объявления статической переменной перед ее именем ставится ключевое слово STATIC: STATIC $somevar; Пример: function keep_track() { STATIC $count = 0; $count++; print $count; print " "; } keep_track(); Результат: 1 2 3 Статические переменные удобны при написании рекурсивных функций. 24