Учебник по основам PHP. PHPBeginner

Функции


get_defined functions

Получение перечисления всех доступных функций

array get_defined_functions(void)

Возвращает многомерный ассоциативный массив, содержащий имена всех функций, доступных сценарию.

См. также: get_defined_vars(), get_extension_funcs().

function_ exists

Проверка существования функции

bool function exists (string function name)

Возвращает TRUE, если функция с именем function_name была декларирована.

if ( function_exists( 'imap_open')) { echo "IMAP функции доступны.<br>\n" } else { echo "IMAP функции НЕ доступны <br>\n"-j }

Заметьте, что если имя функции декларировано, это еще не означа-/ ст, что ее можно использовать, и это зависит от конфигурации РНР.

См. также method_exists().

call_user_func

Косвенный вызов функции



mixed call_user_func (string functioiyiame [, mixed parameter [, mixed

Вызывает функцию с именем function_name, передавая ей все последующие аргументы.

function AAA ($t) { print "Аргумент - $t": } call_user_fur>c САДА'. "МОЙ аргумент");

create_function

Динамическое создание функции

string create_function (string args, string code)<$M2-36> Создает анонимную функцию и возвращает подобранное для нее имя. Обычно перечисление в строке args аргументов функции передается в одинарных кавычках в качестве ограничителей; и то же рекомендуется для кода тела функции, передаваемого в строке code. Это делается для того, чтобы предотвратить замену интерпретатором переменных на значения; в противном случае необходимо предварять указание переменных слешем: Uavar. Возвращаемые имена функций обычно имеют префикс lambda

Таким образом, можно создавать функции на основе информации, полученной во время исполнения.

Snewfunc = create_function('$a.Sb', 'return "ln($a) + ln($b) = " log($a * $b),'); echo "Новой анонимной функции присвоено имя: $newfunc\n"; echo $newfunc(2.M_E)."\n"; // Выводит следующее // Новой анонимной функции присвоено имя- alambda_l // ln(2) + ln(2.718281828459) = 1 6931471805599


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

function process($varl. $var2. $farr) { // функция обработчик for ($f=0: $f < count($farr); $f++) echo $farr[$f]($varl.$var2)."\n". } // создать набор математических функций $fl = 'if ($a >=0) {return "b*a".5 = ".$b*sqrt($a),}'. ' else {return FALSE:}'; $f2 = "return \"min(bx2+a. a~2+b) = \" min(\$a*\$a+\$b.\$b*\$b+\$a):"; $f3 = 'if ($a > 0 && $b != 0) {return "ln(a)/b = " log($a)/$b;}'. I else {return FALSE;}'. Sfarr = array( create_function('$x.$y', 'return "немного тригонометрии: ". (sin($x) + $x*cos($y)):'). create_function('$x.$y'. 'return "гипотенуза: ". sqrt($x*$x + $y*$y).'). create_function('$a.$b', $fl). create_function('$a.$b', $f2), create_function('$a.$b'. $f3) ): echo "\пИспользование первого набора матем. функций \n"; echo "parameters: 2.3445. M_PI\n"; process(2 3445. M_PI, Sfarr): // теперь создать набор строковых функций Sgarr = array( create_function ('$b.$a'.'if (strncmp($a.$b,3) == 0)' ' return "** \"$a\" и \"$b\"\n** Похоже строки одинаковы!' ' (после проверки первых трех символов)";'). create_function('$a.$b'.'; return "CRC: ".crc32($a).". ". crc32(b):'), create_function('$a.$b', '; return "sirmlar(a.b) = ". siimlar_text($a.$b,&$p) "($p*)":') ). echo "\пИспользование первого набора строковых функций \n": processC'OnbiT - это сын ошибок". "Опыт - это эксперимент". Sgarr);

После запуска сценария будет выведен следующий текст:

Использование первого набора матем. функций parameters: 2.3445. М_Р1 немного тригонометрии: - 1.6291725057799 гипотенуза 3.9199852871011 о*а'.5 = 4 8103313314525 min(b~2+a a'2+b) = 8.6382729035898 ln(a)/b = 0 27122299212594 Использование первого набора строковых функций ** "Опыт - это эксперимент" и "Опыт - это сын ошибок" ** Похоже строки одинаковы! (после проверки первых трех символов) CRC: -1865696101 . 1908338681 siimlar(a.b) = 13 (60.4651162/907*)



Но, пожалуй, наиболее полезное использование анонимных лямбда-функций — это их использование для создания функций обратного вызова, например при использовании совместно с array_walk() или usort().

//Пример 1. Использование anonymous функций, как callback функций $av = arrayC'the "."a "."that "."this "): array_walk($av. create_function('S$v.$k'.'$v = $v."thing".')): pnnt_r($av): // for PHP 3 use varjJump()// Выводит: // Array // ( // [0] => the thing // [1] => a thing // [2] => that thing // [3] => this thing // ) // массив строк отсортированный по числу символов в строке // от наиболее короткой до самой длинной $sv = arrayC'small","larger","a big string","It is a string thing"); print_r($sv); // Выводит: // Array // ( // [0] => small // [1] => larger // [2] => a big string // [3] => it is a string thing // ) // сортировать строки usort($sv. create_function ('$a.$b' . 'return strlen($b) - strlen($a): ' )): print_r($sv); // Выводит: // Array // { // [О] => it is a string thing // [1] => a big string // [2] => larger // [3] => small // )

func_get_arg

Получение аргумента функции

mixed func_get_arg (Int argjium)

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

Функция func_get_arg() выдаст предупреждение об ошибке при вызове вне определения функции. Также предупреждение будет выдано (а функция возвратит FALSE) при попытке узнать параметр, которого не существует в списке аргументов; для правильной работы функции прежде необходимо узнать общее количество параметров с помощью функции func_num_args().

<?php function foot) { Snumargs = func_num_args(); echo "Число аргументов $numargs <br>\n": if (Snumargs >= 2) j echo "Второй аргумент: " func_get_arg (1) . "<br>\n": } } foo (1. 2. 3): ?>

См. также: func_num_args() и func_get_args().



func_get_args

Получение аргументов функции в массиве

array func_get_args (void)

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

<?рhр function тоо() { Jnumargs = func_num_args() ; echo "число аргументов: $numargs<br>\n". $arg_list = func_get_args(). for (Si = 0. $1 < Snumargs; $1+*) { echo "аргумент (номер $i): " . $arg list[$i] . "<br>\n"; } } foo (1. 2. 3); ?>

См. также: func_num_args() и func_get_arg().

func_num_args

Определение числа полученных аргументов

int func_num_args (void)

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

Эта функция обычно используется совместно с функциями func_get_ arg() и func_get_args() в пользовательских функциях, принимающих неопределенное число параметров.

<?php function foo() { Snumargs = func_num_args(): echo "Число аргументов функции: $numargs\n": } foo (]. 2, 3). // Pnnts 'Number of arguments: 3' ?>


Содержание раздела