Руководство по PHP
Пред. |  | След.

# Глава 17. Функции

# Функции, определяемые пользователем

Приведем пример синтаксиса, используемого для описания функций:

Пример 17-1. Псевдокод для демонстрации использования функций
`<?php function foo($arg_1, $arg_2, /* ..., */ $arg_n) { echo "Example function.\n"; return $retval; } ?>`

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

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

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

Пример 17-2. Функции, зависящие от условий
`<?php $makefoo = true; /* Мы не можем вызвать функцию foo() в этом месте, поскольку она еще не определена, но мы можем обратиться к bar() */ bar(); if ($makefoo) { function foo() { echo "I don't exist until program execution reaches me.\n"; } } /* Теперь мы благополучно можем вызывать foo(), поскольку $makefoo была интерпретирована как true */ if ($makefoo) foo(); function bar() { echo "I exist immediately upon program start.\n"; } ?>`

Пример 17-3. Вложенные функции
`<?php function foo() { function bar() { echo "I don't exist until foo() is called.\n"; } } /* Мы пока не можем обратиться к bar(), поскольку она еще не определена. */ foo(); /* Теперь мы можем вызвать функцию bar(), обработка foo() сделала ее доступной. */ bar(); ?>`

PHP не поддерживает перегрузку функции, также отсутствует возможность переопределить или удалить объявленную ранее функцию.

> Замечание: Имена функций регистронезависимы, тем не менее, более предпочтительно вызывать функции так, как они были объявлены.

PHP 3 не поддерживает переменное количество аргументов функции, хотя поддержка значений по умолчанию для аргументов присутствует (смотрите раздел Значения аргументов по умолчанию). Начиная с 4-й версии PHP поддерживает и то, и другое: смотрите раздел Списки аргументов переменной длины и описания функций func_num_args(), func_get_arg(), и func_get_args() для более детальной информации.

Пред. | Начало | След.
include_once() | Уровень выше | Аргументы функции