4.4. Статические переменные
Очень важно понимать, что при создании переменной в теле функции время ее существования измеряется временем выполнения функции. После того как выполнение функции завершается и управление передается вызвавшему ее процессу, все пространство переменных функции очищается. Иногда это нежелательно, так как возможны ситуации, когда функции должны помнить значения, хранящиеся в переменных функции в промежутках между ее вызовами. Это можно осуществить, используя глобальные переменные, но более элегантным решением является использование оператора static.
Статическую переменную можно объявить в начале функции до того, как будут заданы какие-либо команды. Эта переменная сохранит присвоенное ей значение после завершения работы функции. Для чего это необходимо? Предположим, что, как показано в листинге 4.6, строки данной таблицы имеют разный фоновый цвет.
Листинг 4.6. Демонстрация статических переменных
<?
function useColor()
{
//Запомнить последний использованный цвет
static $ColorValue = "#00FF00";
//Выбрать следующий цвет if($ColorValue == "#00FF00")
{
$ColorValue = "#CCFFCC";
}
else
{
$ColorValue = "#00FF00";
}
return($ColorValue);
}
print("<table width="300">n"); for($count=0; $count < 10; $count++)
{
//Задать цвет текущей строки
$RowColor = useColor();
/*
** Распечатать HTML-код строки
** Задать фоновый цвет
*/
print("<tr>" .
"<td style=" фон: $RowColor">" .
" Строка номер $count" .
"</td>" . "</tr>n");
}
print("</table>n");
?>
В главе 6, "Классы и объекты", описываются члены статического класса, которые отличаются от статических переменных, используемых в функциях.
4.5. Аргументы
При объявлении функции можно объявить аргументы. Аргументы указываются в скобках и отделяются друг от друга запятыми. Аргументам должен предшествовать символ доллара. Внутри функции они становятся переменными. При вызове функции она принимает передаваемые значения.
По умолчанию аргументы копируют переданные значения в локальную переменную, еще известную как передаваемое значение. Если аргументу функции предшествует оператор &, переменная становится псевдонимом передаваемого значения и называется ссылкой на переменную. При изменении значения переменной, на которую дается ссылка, изменения вносятся и в оригинал. Объяснение феномена ссылок на переменные см. в главе 2, "Переменные, операторы и выражения".
Предположим, что, для того чтобы продемонстрировать эту идею, нам необходима функция, которая удаляет из чисел запятые. Таким образом, если в поле ввода мы получим что-нибудь вроде 10,000, то должны быть уверены, что это десять тысяч, а не просто десять. Создадим функцию, которая удаляет все запятые из вводимой функции. Но для этого мы планируем только передать переменную и получить ее видоизмененной. Такие возможности продемонстрированы в листинге 4.7.
Кроме того, можно сделать этот аргумент необязательным. Многие встроенные функции имеют такую возможность. Рассмотрим уже знакомую вам функцию date. Ей необходимо передать один или два аргумента date. Первым аргументом является формат возвращаемого значения, а вторым - временная метка (дата в секундах начиная с 1 января 1970 года). Если второй аргумент не задан, используется текущее время.
| Листинг 4.7. Передача аргументов с помощью ссылок
<?php
function stripCommas(&$text)
{
$text = str_replace(",", "", $text);
}
$myNumber = "10,000";
stripCommas($myNumber);
print($myNumber);
?>
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Функции. Часть Третья.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Функции. Часть Вторая. | PHP. Функции. Часть Четвёртая. |