Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




 

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

Определение функций обычно состоит из трёх частей:

Имя функции.

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

Тело функции, заключённое в фигурные скобки.

Обобщенных синтаксис функций PHP выглядит так:

function имя_функции([параметр1, параметр2... параметрN]) {

Тело функции }

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

Рассмотрим простой пример использования функции. Предположим, вы хотите создать функцию для вывода заголовка на страницу:

function zagolovok() {

echo "<h1 align=center>Заголовок</h1>"; }

Результат вызова данной функции выглядит следующим образом:

 

Рис. 18. Результат вызова функции

 

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

Рассмотрим разновидность функции zagolovok(), при вызове которой передаётся параметр. Предположим у вас несколько страниц с разным заголовком. В этом случае zagolovok() можно записать так:

function zagolovok($title) {

echo "<h1 align=cente>$title</h1>"; }

Переменная $title, значение которой передаётся за пределами функции в качестве параметра. Переданное значение можно использовать и модифицировать в любом месте функции, но любые изменения будут действовать лишь внутри функции. Однако спецальные ключевые слова, позволяют сделать так, чтобы изменение параметров распростронялось и за пределами функции. Эти ключевые слова представлены в главе виды переменных

 

4.4.7.2. Возврат значения из функции

 

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

<?

$price=100;

$tax=.06;

function nalog($tax, $price) {

$sales_tax=$tax;

return $price+($price*$sales_tax); }

$total_cost=nalog($tax, $price);

$total_cost=round($total_cost,2); // округление до двух десятичных цифр

echo 'Total cost is $'.$total_cost;

?>

 

Рис. 19. Результат работы программы с вызовом функции

 

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


$cost=1456.22;

$limit=1000.00;

function check_limit($total_cost, $credit_limit) {

if ($total_cost>$credit_limit) { return 0;}

else { return 1; } }

if (check_limit($cost, $limit))

{ echo "Keep shopping!"; } else {

echo "Please lower total bill to less then \$$limit!";}


 

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

$label="merlot"; //сорт вина
function best_years($label) {
$merlot=array('1987','1983','1977');
$zinfandel=array('1992','1990','1989');
return $label; }
// функция list() используется для получения возвращаемых значений.
list(yr1, yr2, yr3)=best_years($label);
echo "$label hes three perticularly remarkable years: $yr1, $yr3, $yr2";

Программа выводит следующий результат:
merlot has three particulary remarkable years: 1987, 1983, 1977

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

 

Ситуация, при которой функция многократно вызывает сама себя, пока не будет выполнено некоторое условие, открывает замечательные возможности. При правильном использовании рекурсивные функции уменишают объём программы и делают её более выразительной. Рекурсивные функции особенно часто используются при выполнении повторяющихся действий - например, при поиске в файлах/массивах и построении графических изображений. Класическим примером рекурсивных функций, встречающимся во многих курсах програмирования, является суммирование чисел от 1 до N. Программа приведённая ниже, суммирует все числа от 1 до 10:


 

function summation($count) {

if ($count!=0) {

return $count+summation($count-1); } }

$sum=summation(10);

echo "Summation=$sum";


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

 

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

 

Одной из интересных возможностей PHP является функйии-переменные, то есть динамические вызовы функций, имена которых определяются во время выполнения программы. Хотя в большенстве web-приложений можно обойтись и без функций-переменных, они значительно сокращают объём и сложность програмного кода, а также часто снимают необходимость в условных командах if.

Вызов функции-переменной представляет собой имя переменной, за которым следует пара круглых скобок. В круглых скобках могут перечисляться параметры (хотя присутствие параметров не обязательно).

Обобщенный синтаксис вызова функции-переменной:
$Имя_функции();

Следующая программа, демонстрирует эту непривычную, но полезную возможность. Допустим программа выводит разную информацию в зависимости от языка, выбранного пользователем:

<?

// Приветствие на итальянском языке

function italian() {

echo "Benvenuti to PHP Recipes"; }

// Приветствие на русском языке

function english() {

echo "Welcome to PHP Recipes"; }

// Выбрать английский язык

$language='english';

// Выполнить функцию-переменную

$language();

?>

Рис. 20 Результат работы программы с функцией-переменной

 

Программа демонстрирует интересную концепцию функций-переменных и наглядно показывает, что функции переменные способствуют уменьшению объёма програмного кода. Если бы не эта возможность, функцию пришлось бы выбирать командой if или switch; это привело бы к заметному увеличению объёма програмного кода и риску появления дополнительных ошибок при кодировании.

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...