Функция может быть определена с использованием следующего синтаксиса:
Пример #1 Псевдокод для демонстрации использования функций
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Example function.\n";
return $retval;
}
?>
Внутри функции может появиться любой допустимый PHP-код, даже другие функции и определения классов .
Имена функций подчиняются тем же правилам, что и другие метки в PHP. Допустимое имя функции начинается с буквы или знака подчеркивания, за которым следует любое количество букв, цифр или знаков подчеркивания. В качестве регулярного выражения это будет выглядеть так: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
.
Совет
Функции не нужно определять до того, как на них будет сделана ссылка, за исключением случаев , когда функция определена условно, как показано в двух примерах ниже.
Когда функция определена условным образом, как показано в двух приведенных примерах. Его определение должно быть обработано до вызова.
Пример #2 Условные функции
<?php
$makefoo = true;
/* We can't call foo() from here
since it doesn't exist yet,
but we can call bar() */
bar();
if ($makefoo) {
function foo()
{
echo "I don't exist until program execution reaches me.\n";
}
}
/* Now we can safely call foo()
since $makefoo evaluated to true */
if ($makefoo) foo();
function bar()
{
echo "I exist immediately upon program start.\n";
}
?>
Пример #3 Функции внутри функций
<?php
function foo()
{
function bar()
{
echo "I don't exist until foo() is called.\n";
}
}
/* We can't call bar() yet
since it doesn't exist. */
foo();
/* Now we can call bar(),
foo()'s processing has
made it accessible. */
bar();
?>
Все функции и классы в PHP имеют глобальную область видимости — их можно вызывать вне функции, даже если они были определены внутри, и наоборот.
PHP не поддерживает перегрузку функций, а также невозможно отменить или переопределить ранее объявленные функции.
Примечание . Имена функций не чувствительны к регистру для символов ASCII
A
доZ
, хотя обычно считается хорошим тоном вызывать функции так, как они появляются в их объявлении.
В функциях поддерживаются как переменное количество аргументов , так и аргументы по умолчанию . См. также ссылки на функции func_num_args() , func_get_arg() и func_get_args() для получения дополнительной информации.
В PHP можно вызывать рекурсивные функции.
Пример #4 Рекурсивные функции
<?php
function recursion($a)
{
if ($a < 20) {
echo "$a\n";
recursion($a + 1);
}
}
?>
Примечание . Рекурсивные вызовы функций/методов с более чем 100-200 уровнями рекурсии могут разбить стек и вызвать завершение текущего скрипта. В частности, бесконечная рекурсия считается ошибкой программирования.
0 комментариев