include("compteur.php"); ?>
Урок 4. Функционируем?Язык PHP, как и практически любой современный язык программирования, поддерживает функции. Функции отличаются от других конструкций языка "хвостом" на конце в виде скобок (), между которыми могут присутствовать некоторые аргументы. В PHP существует два типа функций:
С первым типом мы уже сталкивались, например, когда упоминали функцию print_r(). Эти функции уже заранее разработаны производителем, и мы можем беспрепятственно ими воспользоваться. Они имеют самое разнообразное применение: это и математические функции, и функции работы со строками, массивами, файлами, временем и так далее. Все эти функции вы можете посмотреть в Мануале PHP, либо с некоторыми наиболее используемыми функциями, переведенными на русский язык, вы можете познакомиться прямо на этом сайте. Больше возможностей, а значит и проблем, предоставляют функции, определяемые пользователем. Эти функции разрабатываются самим программистом в процессе написания кода. Они могут быть самыми разнообразными по сложности и разноплановыми по применению. Особенность этих функций состоит в том, что их необходимо определять, в отличие от зарезервированных функций. Синтаксис определения таких функций в общем виде выглядит так:
Имя функции - оригинальный идентификатор, может содержать все буквы латинского алфавита, числа и знак подчеркивания. Следите, чтобы имя вашей функции не совпадало с зарезервированной функцией PHP, иначе программа выведет ошибку. Заметьте, что имя функции, в отличие от имени переменной, нечувствительно к регистру. Аргументами функций могут являться переменные и/или константы. Это те значения, которые будут использоваться командами в теле функции. Внутри функции может быть любой верный php код, включая функции обоих типов, а также классы, которые мы разберем немного позже. Использование функций, определенных пользователем, полностью идентично использованию зарезервированных функций. Приведу в качестве примера определение простенькой функции:
Конструкция return аргумент заставляет данную функцию возвращать после своего выполнения значение аргумента. Посмотрим пример использования вышеуказанной функции:
В этом примере переменной $a присвоилось значение, возвращенное функцией sum (т.е. значение $c). Если бы мы не указали в определении функции return $c, то пример выше вывел бы только 12 + 5 = 17. Нужно учесть, что все переменные внутри функции являются локальными, действующими только в теле функции. Поэтому в примере выше не было ошибкой строчка $a = sum(12, 5), где в функции sum уже есть своя переменная $a. Эти переменные никоем образом не пересекаются и имеют совершенно разное значение. Для того, чтобы переменная, определенная внутри функции, действовала вне ее пределов, необходимо указать, что она является глобальной. Это делается следующим образом:
Как видите, мы не применяли return, так что функция ничего не возвращает, но мы определили переменную $string как глобальную, поэтому она действует в пределах всего кода php, так что в данном случае $string в функции равна $string вне функции. Еще одна проблема, которая может возникнуть при использовании определяемых функций, - то, что функция после своего выполнения теряет все свои значения и при ее новом вызове нельзя использовать данные, полученные при предыдущем выполнении функции. Но эта проблема решаема, используя определение переменное как статичной.
Если бы мы не написали static, то пример вывел бы числа 2, 3 и 4. Следует заметить, что в некоторых случаях нам нужно передавать в качестве аргумента функции одно и то же значение. В этом случае в определении функции можно указать аргумент функции по умолчанию. Тогда, если при вызове функции аргумент не указан, то будет использоваться это значение по умолчанию.
Функцию можно сделать значением переменной. Например, продолжаем пример выше:
На этом все. До следующего урока. |