- •Язык php
- •Динамические сайты
- •Преимущества обработки страниц на стороне сервера
- •Современные технологии обработки страниц на стороне сервера
- •Active Server Pages (asp)
- •Java Servlets и jsp
- •Контрольные вопросы
- •Возможности языкаPhp ОбработкаHtmLформ
- •ГенерированиеHtmLстраниц
- •Взаимодействие с субд
- •Поддержка большого количества библиотек
- •Контрольные вопросы
- •Создание динамических страниц Создание простейшегоPhp-скрипта
- •Рнр и код, выполняемый на стороне клиента
- •Взаимодействие с пользователем
- •Контрольные вопросы
- •Синтаксис языкаPhp Типы данных
- •Константы
- •Объявление и инициализация переменных
- •Преобразование типов
- •Арифметические операторы
- •Унарный оператор
- •Оператор конкатенации строк
- •Сокращенная запись для присвоениязначений переменным
- •Операторы сравнения
- •Условные операторы
- •Функции пользователя
- •Массивы
- •Работа с файлами
- •Контрольные вопросы
- •Рнр иMySql Обработка и хранение структурированных данных
- •Динамические сайты, использующие базу данных
- •Построение реляционной базы данных
- •Продавцы
- •Заказчики
- •SqLзапросы к реляционной базе данных
- •Insert into salespeople values(1001,'Иванов','Москва',0.12);
- •Insert into customers values(2001,'Белкин','Москва',100,1001);
- •Insert into orders values(3008,4723.00,'2002-10-05',2006,1001);
- •Особенности реализацииMySql
- •ВзаимодействиеPhp иMySql
- •Контрольные вопросы
- •Разработка системы "Прайс-лист"
- •Постановка задачи
- •Принципы функционирования программного комплекса
- •Разработка структуры базы данных
- •Проектирование системы администрирования
- •Проектирование генератора прайс-листа
- •Контрольные вопросы
Функции пользователя
Функция - это блок кода, который можно однажды определить, а потом вызывать из других частей программы неограниченное количество раз. Обычно функция принимает один или несколько входных параметров, производит определенный набор операций над ними, а затем возвращает результирующее значение. Функции позволяют писать модульные приложения.
Создавая и тестируя многократно используемые функции, можно сберечь время и сократить число ошибок в программе. В РНР имеется много встроенных функций. В данном разделе будет рассмотрен процесс создания пользовательских функций.
Функции объявляются с помощью оператора function. Рассмотрим пример, в котором описывается функция, вычисляющая куб числа.
// Начало объявления функции
function cube($num) {
// Возвращает $num в третьей степени
return $num * $num * $num;
}
// Окончание объявления функции
// Вызов функции cube():
echo (cube(6)); // Выводит 216
Первые строки приведенного кода имеют вид:
function имя функции(параметры) {тело функции }
Имя функции (в нашем случае "cube") следует за ключевым словом function, а параметры (если они есть) заключаются в скобки и разделяются запятыми. Затем в фигурных скобках должно располагаться тело функции. Для вызова функции просто указывается ее имя, за которым следует пара скобок, содержащих ее аргументы. В PHP З объявление функции должно находиться в коде выше, чем первое обращения к ней, однако в PHP 4 функцию можно определить в любом месте, вне зависимости от расположения ее первого вызова.
В приведенном примере вызов функции cube (6) вычисляет выражение со значением 216. Значение, которое возвращает функция, определяется оператором return в теле функции. При выполнении return действие функции прекращается и выполнение продолжается в строке, из которой вызвана функция, с подстановкой возвращенного значения вместо вызова функции. Функция не обязательно должна возвращать значение
Аргументы позволяют передать функции входные параметры. В коде cube(6) аргументом является число 6. Каждый параметр, переданный функции, имеет свое уникальное имя, описанное при объявлении функции. Обращаться к аргументу внутри функции можно как к переменной с соответствующим именем. В функции cube переменная, содержащая значение переданного параметра называется $num.
По умолчанию функция получает только значение аргумента. Это означает, что в случае, если функции в качестве параметра передается переменная, то в теле функции будет создана переменная, имеющая аналогичное значение. При этом изменение значения созданной внутри функции переменной не приведет к изменению значения переменной, переданной в качестве входного параметра.
Однако возможен вариант, когда в качестве входного параметра функция получит не значение аргумента, а ссылку на него. В этом случае внутри функции не будет создана дополнительная переменная и изменение значения переданного параметра внутри функции приведет к изменению значения переменной, переданной в качестве параметра. Рассмотрим пример, иллюстрирующий процесс передачи параметров в качестве значения, и в качестве ссылки.
function cube($num) {
$num=$num * $num * $num;
return $num;
}
function cube2(&$num) {
$num=$num * $num * $num;
return $num;
}
$a=2;
echo cube($a); //выводит 8
echo $a; //выводит 2
echo cube2($a); //выводит 8
echo $a; //выводит 8
Функция cube получает значение переменной $a и возводит это значение в куб. Значение переменной $a в теле программы остается неизменным. Функция cube2 получает в качестве входного параметра ссылку на переменную $a. В результате выполнения этой функции значение переменной $a изменяется.
Для того, чтобы передать функции в качестве параметра ссылку на переменную, необходимо в описании функции поставить значок & перед соответствующим параметром.
Одним из важнейших вопросов, которые приходится решать разработчику при написании приложения, использующего функции, является вопрос, связанный с областью видимости переменных. Область видимости переменной определяет, в каких частях программы она доступна.
function changeval1() {
$value="2";
}
function changeval2() {
global $value;
$value="2";
}
$value="1";
changeval1();
echo ("$value"); // Выводит "1"
changeval2();
echo ("$value"); // Выводит "2"
Рассмотрим приведенный выше пример. В программе описаны две функции, каждая из которых меняет значение переменной $value. Вместе с тем эта переменная определена в теле программы, т.е. вне функций. После вызова первой функции значение $value вне функции останется неизменным. Переменная $value в функции имеет локальную область видимости и поэтому она отличается от переменной $value, существующей вне функции. Переменная вне функции имеет глобальную область видимости. Для доступа к глобальной переменной из функции используется оператор global. В функции changeval2 переменная $value описана как глобальная. В результате выполнения этой функции значение переменной $value вне функции изменяется.