get_defined_functions

Возвращает перечень всех доступных функций.

Синтаксис:

array get_defined_functions()

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

print_r(get_defined_functions);

function_exists

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

Синтаксис:

bool function_exists(string fuction_name)

Функция function_exists() возвращает значение true, если функция с именем function_name имеется в сценарии. В противном случае возвращает false.

if(function_exists("imagecreate")) {
echo "Библиотека работы с графикой доступна!
";
} else {
echo "Библиотека работы с графикой недоступна!
";
};

call_user_func

Производит косвенный выбор функции.

Синтаксис:

mixed call_user_func(string function_name [, mixed parameter [, mixed ...]])

Функция call_user_func() вызывает функцию function_name и передает ей все остальные параметры parameter ...

<?php
function myFunc($str) {
echo $str;
};
call_user_func("myFunc", "Hello World");
?>

create_function

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

Синтаксис:

string create_function(string args, string code)

Функция create_function() создает анонимную функцию и возвращает имя, созданное для этой функции. Аргументы функции, перечисленные в аргументе args, обычно передаются в одинарных кавычках. Также передается тело функции в аргументе code. Это необходимо для того, чтобы не допустить замену интерпретатором переменных на значения. Если всеже ограничивать двойными кавычками, то необходимо предварять указание переменных слешем: $var.

Обычно возвращаемые функцией имена содержат префикс lambda_.

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

$func = create_function('$a,$b', 
'return "$a*$b = ".$a*$b);');
echo "Имя новой функции: $func<br>";
echo $func(2,3);

Данный пример выведет следующее:

Имя новой функции: lambda_1

func_get_arg

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

Синтаксис:

mixed func_get_arg(int arg_num);

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

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

<?php
function func() {
$num_args=func_num_args();
echo "Число аргументов у этой функции: $num_args<br>";
for($i=0;$i<$num_args;$i++)
echo "$i агрумент: ".func_get_arg($i)."<br>";
};

func("2",1,"tree");
?>

func_get_args

Функция func_get_args() возвращает массив, состоящий из списка аргументов, переданных функции. Каждый элемент массива соответствует аргументу, переданному функции. Если функция используется вне определения пользовательской функции, то генерируется предупреждение.

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

<?
function DataCheck(){
$check =true;
$n = func_num_args();
// число аргументов,
// переданных в функцию

$args = func_get_args();
// массив аргументов функции
for ($i=0;$i<$n;$i++){
$v = $args[$i];
if ($i % 2 == 0){
if (!is_int($v)) $check = false;
// проверяем,
// является ли четный аргумент целым
}
}
return $check;
}
if (DataCheck(array("text", 324)))
echo "Проверка прошла успешно<br>";
else echo "Данные не удовлетворяют
условиям<br>";
?>

Как видим, комбинации функций func_num_args(), func_get_arg() и func_get_args() используется для того, чтобы функции могли иметь переменный список аргументов. Эти функции были добавлены только в PHP 4. В PHP3 для того, чтобы добиться подобного эффекта, можно использовать в качестве аргумента функции массив. Например, вот так можно написать скрипт, проверяющий, является ли каждый нечетный параметр функции целым числом:

<?
function DataCheck($params){
$check =true;
$n = count($params);
// число аргументов,
// переданных в функцию

for ($i=0;$i<$n;$i++){
$v = $params[$i];
if ($i % 2 !== 0){
// проверяем, является ли нечетный
// аргумент целым
if (!is_int($v)) $check = false;
}
}
return $check;
}
if (DataCheck("text", 324))
echo "Проверка прошла успешно<br>";
else echo "Данные не удовлетворяют условиям<br>";
?>

func_num_args

Возвращает число полученных аргументов в пользовательской функции.

Синтаксис:

int func_num_args();

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

Обычно эту функцию используют совместно с функциями func_get_arg() и func_get_args() в пользовательских функциях, которые могут принимать неопределенное количество параметров.

<?php
function func() {
$num_args = func_num_args();
echo "Число аргументов у этой функции: $num_args<br>";
$func_list = func_get_args();
for($i=0;$i<$num_args;$i++)
echo "$i агрумент номер $i: ".$func_list[$i]."<br>";
};

func("2",1,"tree");
?>