Среда, 15.05.2024, 20:38
Главная Регистрация RSS поиск
Приветствую Вас, Гость
Меню сайта
Категории раздела
HTML [44]
Visual C++ и MFC [21]
c++ [78]
php [19]
Javascript [15]
C# [51]
загрузки [0]
XNA [10]
создание игр с помощью xna
Наш опрос
Каким языком программирования вы увлекаетесь
Всего ответов: 2420
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Реклама
Главная » Статьи » php

Урок 4
Язык PHP, как и практически любой современный язык программирования, поддерживает функции. Функции отличаются от других конструкций языка "хвостом" на конце в виде скобок (), между которыми могут присутствовать некоторые аргументы.

В PHP существует два типа функций:
зарезервированные функции;
функции, определяемые пользователем.

С первым типом мы уже сталкивались, например, когда упоминали функцию print_r(). Эти функции уже заранее разработаны производителем, и мы можем беспрепятственно ими воспользоваться. Они имеют самое разнообразное применение: это и математические функции, и функции работы со строками, массивами, файлами, временем и так далее. Все эти функции вы можете посмотреть в Мануале PHP, либо с некоторыми наиболее используемыми функциями, переведенными на русский язык, вы можете познакомиться прямо на этом сайте.

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

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

Синтаксис определения таких функций в общем виде выглядит так:function имя_функции(аргумент1, аргумент2 и так далее)
{
некоторый операции, выполняемые при вызове функции ;
}


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

Аргументами функций могут являться переменные и/или константы. Это те значения, которые будут использоваться командами в теле функции.

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

Использование функций, определенных пользователем, полностью идентично использованию зарезервированных функций.

Приведу в качестве примера определение простенькой функции:function sum($a, $b)
{
$c = $a + $b;
echo "$a + $b = $c <br>";
return $c;
}


Конструкция return аргумент заставляет данную функцию возвращать после своего выполнения значение аргумента. Посмотрим пример использования вышеуказанной функции:$a = sum(12, 5);
echo $a;
/* этот код выведет
12 + 5 = 17
17
*/


В этом примере переменной $a присвоилось значение, возвращенное функцией sum (т.е. значение $c). Если бы мы не указали в определении функции return $c, то пример выше вывел бы только 12 + 5 = 17.

Нужно учесть, что все переменные внутри функции являются локальными, действующими только в теле функции. Поэтому в примере выше не было ошибкой строчка $a = sum(12, 5), где в функции sum уже есть своя переменная $a. Эти переменные никоем образом не пересекаются и имеют совершенно разное значение.

Для того, чтобы переменная, определенная внутри функции, действовала вне ее пределов, необходимо указать, что она является глобальной. Это делается следующим образом:function word ($word)
//функция word() и переменная $word - совершенно разные вещи
{
global $string; //определение $string как глобальной
$string = $word." - отличная вещь!";
}
word ("PHP");
echo $string; //выведет "PHP - отличная вещь!"


Как видите, мы не применяли return, так что функция ничего не возвращает, но мы определили переменную $string как глобальную, поэтому она действует в пределах всего кода php, так что в данном случае $string в функции равна $string вне функции.

Еще одна проблема, которая может возникнуть при использовании определяемых функций, - то, что функция после своего выполнения теряет все свои значения и при ее новом вызове нельзя использовать данные, полученные при предыдущем выполнении функции. Но эта проблема решаема, используя определение переменное как статичной.function mult ($a)
{
static $result=1; //определение $result как статичной
$result *= $a;
echo $result.'<br>';
}
for ($i=2; $i<=4; $i++)
{ mult($i) ;}

/*выведет
2
6
24
*/


Если бы мы не написали static, то пример вывел бы числа 2, 3 и 4.

Следует заметить, что в некоторых случаях нам нужно передавать в качестве аргумента функции одно и то же значение. В этом случае в определении функции можно указать аргумент функции по умолчанию. Тогда, если при вызове функции аргумент не указан, то будет использоваться это значение по умолчанию.function arr_count ($a, $b=3) /* значение по умолчанию должно указываться справа */
// такая запись: function arr_count ($b=3, $a) - будет работать неверно
{
global $array;
$result = $array[$a] + $array[$b];
return $result;
}
$array = array(2, 5, 4, 7, 2);
echo arr_count(2)." + ".arr_count(1, 4)." = ".(arr_count(2) + arr_count(1, 4));
// выведет
11 + 7 = 18


Функцию можно сделать значением переменной. Например, продолжаем пример выше:$CountArray='arr_count';
echo $CountArray(0); //выведет число 9


На этом все. До следующего урока.
Категория: php | Добавил: SLOT85 (04.02.2012)
Просмотров: 928 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]