Функции > Функции, определяемые пользователем
Закрыть

Синтаксис определения функции

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

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

Функция вычисления факториала натурального числа


function fact($n){
if ($n==0) return 1;
else return $fact = $n * fact($n-1);
}
echo fact(3);
// можно было бы написать echo (3*2);
// но если число большое,
echo fact(50);
// то удобнее пользоваться функцией,
// чем писать echo (50*49*48*...*3*2);
?>



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

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


function Имя_функции (параметр1, параметр2,
... параметрN){
Блок_действий
return "значение возвращаемое функцией";
}



Имя_функции и имена параметров функции (параметр1, параметр2 и т.д.) должны соответствовать правилам
наименования в PHP (и русских символов в них лучше не использовать). Имена функций нечувствительны
к регистру. Параметры функции – это переменные языка, поэтому перед названием каждого из них должен
стоять знак $. Никаких многоточий ставить в списке параметров нельзя. В-третьих, вместо слов блок_действий
в теле функции должен находиться любой правильный PHP-код (не обязательно зависящий от параметров).
И наконец, после ключевого слова return должно идти корректное php-выражение (что-либо, что имеет
значение). Кроме того, у функции может и не быть параметров, как и возвращаемого значения.

Пример правильного объявления функции – функция вычисления факториала, приведенная выше.

Как происходит вызов функции? Указывается имя функции и в круглых скобках список значений ее
параметров, если таковые имеются:


Имя_функции ("значение_для_параметра1",
"значение_для_параметра2",...);
// пример вызова функции – вызов функции
// вычисления факториала приведен выше,
// там для вычисления факториала числа 3
// мы писали: fact(3);
// где fact – имя вызываемой функции,
// а 3 – значение ее параметра с именем $n
?>



Когда можно вызывать функцию? Функцию можно вызвать после ее определения, т.е. в любой строке программы
ниже блока function f_name(){...}. В PHP3 это было действительно так. Но уже в PHP4 такого требования нет.
Все дело в том, как интерпретатор обрабатывает получаемый код. Единственное исключение составляют функции,
определяемые условно (внутри условных операторов или других функций). Когда функция определяется таким
образом, ее определение должно предшествовать ее вызову.


$make = true;
/* здесь нельзя вызвать Make_event();
потому что она еще не существует, но можно
вызвать Save_info() */

Save_info("Вася","Иванов",
"Я выбрал курс по PHP");

if ($make){
// определение функции Make_event()
function Make_event(){
echo "Хочу изучать Python";
}
}
// теперь можно вызывать Make_event()
Make_event();
// определение функции Save_info
function Save_info($first, $last, $message){
echo "$message";
echo "Имя: ". $first . " ". $last . "";
}
Save_info("Федя","Федоров",
"А я выбрал Lisp");
// Save_info можно вызывать и здесь
?>


Пример 1. Определение функции внутри условного оператора (html, txt)

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


/* нельзя сохранить данные, т.е. вызвать
функцию DataSave() до того, как выполнена
проверка их правильности, т.е. вызвана
функция DataCheck() */

DataCheck();
DataSave();

function DataCheck(){
// проверка правильности данных
function DataSave(){
// сохраняем данные
}
}
?>


Пример 2. Определение функции внутри функции (html, txt)


Правила вызова функции

Функцию можно вызвать после ее определения, т.е. в любой строке программы ниже блока function f_name(){...}.
В PHP3 это было действительно так. Но уже в PHP4 такого требования нет.
Все дело в том, как интерпретатор обрабатывает получаемый код. Единственное исключение составляют функции,
определяемые условно (внутри условных операторов или других функций).
Когда функция определяется таким образом, ее определение должно предшествовать ее вызову.


$make = true;
/* здесь нельзя вызвать Make_event();
потому что она еще не существует, но можно
вызвать Save_info() */

Save_info("Вася","Иванов",
"Я выбрал курс по PHP");

if ($make){
// определение функции Make_event()
function Make_event(){
echo "Хочу изучать Python";
}
}
// теперь можно вызывать Make_event()
Make_event();
// определение функции Save_info
function Save_info($first, $last, $message){
echo "$message";
echo "Имя: ". $first . " ". $last . "";
}
Save_info("Федя","Федоров",
"А я выбрал Lisp");
// Save_info можно вызывать и здесь
?>


Пример 1. Определение функции внутри условного оператора (html, txt)

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


/* нельзя сохранить данные, т.е. вызвать
функцию DataSave() до того, как выполнена
проверка их правильности, т.е. вызвана
функция DataCheck() */

DataCheck();
DataSave();

function DataCheck(){
// проверка правильности данных
function DataSave(){
// сохраняем данные
}
}
?>


Пример 2. Определение функции внутри функции (html, txt)

Не хлебом единым жив человек, а стало быть его должна интересовать не только работа и не только функции PHP. Вот здесь можно Рецензии новых фильмов. Скачать новинки фильмов. . Вам интересно? Тогда пройдите по ссылке. Если нет, то вот еще Профессиональная косметика Londa - лонда профессионал. . Быть может, вас это интересует, тогда не упускайте возможность приобщиться!