Информационные технологииStfw.Ru 🔍

Функции

Функции работы с данными
🕛 01.11.2006, 13:11
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' ?>

Учебник по основам PHP   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉