Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СИТ_Ответы_5 курс.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
577 Кб
Скачать
☆

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

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

<?

$a = 3; $b = 2;

function & ref($par){

global $a, $b;

if ($par % 2 == 0) return $b;

else return $a;

}

$var =& ref(4);

echo $var, " и ", $b,"<br>";

//выведет 2 и 2

$b = 10;

echo $var, " и ", $b,"<br>";

// выведет 10 и 10

?>

Пример 5.10. Возвращение ссылки

При использовании синтаксиса ссылок в переменную $var нашего примера не копируется значение переменной $bвозвращенной функцией $ref, а создается ссылка на эту переменную. То есть теперь переменные $var и $b идентичны и будут изменяться одновременно.

Переменные функции

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

<?

/* создадим две простые функции:

Add_sign – добавляет подпись к строке и

Show_text – выводит строку текста */

function Add_sign($string,

$sign="С уважением, Петр"){

echo $string ." ".$sign;

}

function Show_text(){

echo "Отправить сообщение по почте<br>";

}

$func = "Show_text";

// создаем переменную со значением,

// равным имени функции Show_text

$func();

// это вызовет функцию Show_text

$func = "Add_sign";

// создаем переменную со значением,

// равным имени функции Add_sign

$func("Привет всем <br>");

// это вызовет функцию

// Add_sign с параметром "Привет всем"

?>

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

В этом примере функция Show_text просто выводит строку текста. Казалось бы, зачем для этого создавать отдельную функцию, если существует специальная функция echo(). Дело в том, что такие функции, как echo(), print(), unset(),include() и т.п. нельзя использовать в качестве переменных функций. То есть если мы напишем:

<?

$func = "echo ";

$func("TEXT");

?>

то интерпретатор выведет ошибку:

Fatal error: Call to undefined function:

echo() in

c:\users\nina\tasks\func\var_f.php on line 2

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

Внутренние (встроенные) функции

Говоря о функциях, определяемых пользователем, все же нельзя не сказать пару слов о встроенных функциях. С некоторыми извстроенных функций, такими как echo(), print(), date(), include(), мы уже познакомились. На самом деле все перечисленные функции, кроме date(), являются языковыми конструкциями. Они входят в ядро PHP и не требуют никаких дополнительных настроек и модулей. Функция date() тоже входит в состав ядра PHP и не требует настроек. Но есть и функции, для работы с которыми нужно установить различные библиотеки и подключить соответствующий модуль. Например, для использования функций работы с базой данных MySql следует скомпилировать PHP с поддержкой этого расширения. В последнее время наиболее распространенные расширения и соответственно их функции изначально включают в состав PHP так, чтобы с ними можно работать без каких бы то ни было дополнительных настроек интерпретатора.