Нина Савельева - Курс "Язык программирования PHP" Страница 16

Тут можно читать бесплатно Нина Савельева - Курс "Язык программирования PHP". Жанр: Компьютеры и Интернет / Прочая околокомпьтерная литература, год неизвестен. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте «WorldBooks (МирКниг)» или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Нина Савельева - Курс "Язык программирования PHP"

Нина Савельева - Курс "Язык программирования PHP" краткое содержание

Прочтите описание перед тем, как прочитать онлайн книгу «Нина Савельева - Курс "Язык программирования PHP"» бесплатно полную версию:
PHP, в настоящее время, – один из наиболее популярных языков для реализации веб-приложений. Данный курс посвящен изучению его основ. Акцент делается на практическое применение полученных навыков.Язык PHP был создан для решения конкретной практической задачи в среде интернет (какой именно можно узнать, прочитав первую лекцию курса). Мы тоже постараемся не отвлекаться слишком сильно на теоретические рассуждения, и будем стремиться к решению какой-нибудь конкретной задачи в каждой из лекций. Большинство примеров взяты из реально существующей системы: виртуального музея истории информатики. Первая часть курса посвящена изучению основ синтаксиса и управляющим конструкциям. После этого рассматривается технология клиент-сервер, как основная сфера приложения языка PHP. Затем переходим к изучению наиболее полезных на наш взгляд встроенных функций и решению с их помощью практических задач. Хотя объектная модель в языке PHP не самая богатая, ее принципиальное наличие позволяет естественным образом описывать объектные модели данных. В качестве базовой модели будет рассмотрена модель документа виртуального музея информатики. После этого будет рассмотрен ряд прикладных аспектов: работа с файловой системой, с БД, строками, сессиями, DOM XML - все это позволит рассмотреть ключевые задачи практического использования языка.

Нина Савельева - Курс "Язык программирования PHP" читать онлайн бесплатно

Нина Савельева - Курс "Язык программирования PHP" - читать книгу онлайн бесплатно, автор Нина Савельева

<?

function DataCheck(){

$check =true;

$n = func_num_args();

// число аргументов,

// переданных в функцию

/* проверяем, является ли первый

переданный аргумент целым числом */

if ($n>=1) if (!is_int(func_get_arg(0)))

$check = false;

/* проверяем, является ли второй

переданный аргумент строкой */

if ($n>=2)

if (!is_string(func_get_arg(1)))

$check = false;

return $check;

}

if (DataCheck(a123,"text"))

echo "Проверка прошла успешно<br>";

else echo "Данные не удовлетворяют

условиям<br>";

if (DataCheck(324))

echo "Проверка прошла успешно<br>";

else echo "Данные не удовлетворяют условиям<br>";

?>

Результатом работы будет следующее.

Данные не удовлетворяют условиям

Проверка прошла успешно

Функция func_get_args() возвращает массив, состоящий из списка аргументов, переданных функции. Каждый элемент массива соответствует аргументу, переданному функции. Если функция используется вне определения пользовательской функции, то генерируется предупреждение.

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

<?

function DataCheck(){

$check =true;

$n = func_num_args();

// число аргументов,

// переданных в функцию

$args = func_get_args();

// массив аргументов функции

for ($i=0;$i<$n;$i++){

$v = $args[$i];

if ($i % 2 == 0){

if (!is_int($v)) $check = false;

// проверяем,

// является ли четный аргумент целым

}

}

return $check;

}

if (DataCheck("text", 324))

echo "Проверка прошла успешно<br>";

else echo "Данные не удовлетворяют

условиям<br>";

?>

Как видим, комбинации функций func_num_args(), func_get_arg() и func_get_args() используется для того, чтобы функции могли иметь переменный список аргументов. Эти функции были добавлены только в PHP 4. В PHP3 для того, чтобы добиться подобного эффекта, можно использовать в качестве аргумента функции массив. Например, вот так можно написать скрипт, проверяющий, является ли каждый нечетный параметр функции целым числом:

<?

function DataCheck($params){

$check =true;

$n = count($params);

// число аргументов,

// переданных в функцию

for ($i=0;$i<$n;$i++){

$v = $params[$i];

if ($i % 2 !== 0){

// проверяем, является ли нечетный

// аргумент целым

if (!is_int($v)) $check = false;

}

}

return $check;

}

if (DataCheck("text", 324))

echo "Проверка прошла успешно<br>";

else echo "Данные не удовлетворяют условиям<br>";

?>

Использование переменных внутри функции

Глобальные переменные

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

global $var1, $var2;

<?

$a=1;

function Test_g(){

global $a;

$a = $a*2;

echo 'в результате работы функции $a=',$a;

}

echo 'вне функции $a=',$a,', ';

Test_g();

echo "<br>";

echo 'вне функции $a=',$a,', ';

Test_g();

?>

В результате работы этого скрипта получим:

вне функции $a=1, в результате работы

функции $a=2

вне функции $a=2, в результате работы

функции $a=4

Когда переменная объявляется как глобальная, фактически создается ссылка на глобальную переменную. Поэтому такая запись эквивалентна следующей (массив GLOBALS содержит все переменные, глобальные относительно текущей области видимости):

$var1 = & $GLOBALS["var1"];

$var2 = & $GLOBALS["var2"];

Это значит, например, что удаление переменной $var1 не удаляет глобальной переменной $_GLOBALS["var1"].

Статические переменные

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

static $var1, $var2;

Статической переменной может быть присвоено любое значение, но не ссылка.

<?

function Test_s(){

static $a = 1;

// нельзя присваивать выражение или ссылку

$a = $a*2;

echo $a;

}

Test_s(); // выведет 2

echo $a; // ничего не выведет, так как

// $a доступна только

// внутри функции

Test_s(); // внутри функции $a=2, поэтому

// результатом работы функции

// будет число 4

?>

Возвращаемые значения

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

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

<?php

/* если второй параметр вычисляется

как true, то он рассматривается как

дата смерти, */

function Age($birth, $is_dead){

if ($is_dead) return $is_dead-$birth;

else return date("Y")-$birth;

}

echo Age(1971, false); // выведет 33

echo Age(1971, 2001); // выведет 30

?>

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

$my_age = Age(1981, 2004);

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

<?php

function Full_age($b_day, $b_month, $b_year)

{

$y = date("y");

$m = intval(date("m"));

$d = intval(date("d"));

$b_month = intval($b_month);

$b_day = intval($b_day);

$b_year = intval($b_year);

$day = ($b_day > $d ? $d : $d - $b_day);

$tmpMonth = ($b_day > $d ? -1 : 0);

$month = ($b_month > $m + $tmpMonth ? $m : $m + $tmpMonth - $b_month);

$tmpYear = ($b_month > $m + $tmpMonth ? -1 : 0);

if ($b_year > $y + $tmpYear)

{

$year = 0; $month = 0; $day = 0;

}

else

{

$year = $y + $tmpYear - $b_year;

}

return array ($day,$month,$year);

}

$age = Full_age("29","06","1986");

echo "Вам $age[2] лет, $age[1] месяцев и $age[0] дней";

?>

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

<?

// задание функции Full_age()

list($day,$month,$year) = Full_age("07",

"08","1974");

echo "Вам $year лет, $month месяцев и

$day дней";

?>

Вообще конструкцию list() можно использовать для присвоения переменным значений элементов любого массива.

<?

$arr = array("first","second");

list($a,$b) = $arr;

// переменной $a присваивается первое

// значение массива, $b – второе

echo $a," ",$b;

// выведет строку «first second»

?>

Возвращение ссылки

В результате своей работы функция также может возвращать ссылку на какую-либо переменную. Это может пригодиться, если требуется использовать функцию для того, чтобы определить, какой переменной должна быть присвоена ссылка. Чтобы получить из функции ссылку, нужно при объявлении перед ее именем написать знак амперсанд (&) и каждый раз при вызове функции перед ее именем тоже писать амперсанд (&). Обычно функция возвращает ссылку на какую-либо глобальную переменную (или ее часть – ссылку на элемент глобального массива), ссылку на статическую переменную (или ее часть) или ссылку на один из аргументов, если он был также передан по ссылке.

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.