PHP.mk документација

Кориснички дефинирани функции

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

functions.user-defined.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека functions.user-defined.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Кориснички дефинирани функции

Референца за `functions.user-defined.php` со подобрена типографија и навигација.

functions.user-defined.php

Кориснички дефинирани функции

Функцијата се дефинира со користење на function клучниот збор, име, список на параметри (кои може да бидат празни) разделени со запирки (, ) заокружен со загради, проследен со телото на функцијата заокружено со кадрави загради, како што е прикажано подолу:

Пример #1 Декларирање нова функција наречена foo

<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo
"Example function.\n";
return
$retval;
}
?>

Забелешка:

Од PHP 8.0.0, списокот на параметри може да има последна запирка:

<?php
function foo($arg_1, $arg_2,) { }
?>

Било кој валиден PHP код може да се појави во телото на функцијата, дури и други функции и class definitions.

Имињата на функциите ги следат истите правила како и другите ознаки во PHP. Валидното име на функција започнува со буква или подвлекување, проследено со кој било број букви, броеви или подвлекувања. Како регуларен израз, тоа би било изразено вака: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$.

Функциите не мора да бидат дефинирани пред да бидат повикани, except кога функцијата е условно дефинирана како што е прикажано во двата примери подолу.

Кога функцијата е дефинирана на условен начин како што се прикажани двата примери. Нејзината дефиниција мора да биде обработена prior пред да биде повикана.

Пример #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 to Z, иако обично е добра форма да се повикуваат функциите како што се појавуваат во нивната декларација.

И двете променлив број на аргументи and основни аргументи се поддржани во функциите. Погледнете ги и референците за функции за func_num_args(), func_get_arg()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во func_get_args() Користење на PHP од командната линија

Можно е да се повикуваат рекурзивни функции во PHP.

Пример #4 Рекурзивни функции

<?php
function recursion($a)
{
if (
$a < 20) {
echo
"$a\n";
recursion($a + 1);
}
}
?>

Забелешка: Рекурзивните повици на функции/методи со над 100-200 нивоа на рекурзија може да го преполнат стекот и да предизвикаат прекин на тековниот скрипт. Особено, бесконечната рекурзија се смета за програмска грешка.

Белешки од корисници

Нема белешки од корисници за оваа страница.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.