Как создавать функции в php
Приведём пример синтаксиса, используемого для описания функций:
Пример #1 Псевдокод для демонстрации использования функций
Внутри функции можно использовать любой корректный PHP-код, в том числе другие функции и даже объявления классов.
Имена функций следуют тем же правилам, что и другие метки в PHP. Корректное имя функции начинается с буквы или знака подчёркивания, за которым следует любое количество букв, цифр или знаков подчёркивания. В качестве регулярного выражения оно может быть выражено так: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$ .
Функции не обязаны быть определены до их использования, исключая тот случай, когда функции определяются условно, как это показано в двух последующих примерах.
В случае, когда функция определяется в зависимости от какого-либо условия, например, как это показано в двух приведённых ниже примерах, обработка описания функции должна предшествовать её вызову.
Пример #2 Функции, зависящие от условий
/* Мы не можем вызвать функцию foo() в этом месте,
поскольку она ещё не определена, но мы можем
обратиться к bar() */
if ( $makefoo ) <
function foo ()
<
echo «Я не существую до тех пор, пока выполнение программы меня не достигнет.\n» ;
>
>
/* Теперь мы благополучно можем вызывать foo(),
поскольку $makefoo была интерпретирована как true */
if ( $makefoo ) foo ();
function bar ()
<
echo «Я существую сразу с начала старта программы.\n» ;
>
Пример #3 Вложенные функции
<?php
function foo ()
<
function bar ()
<
echo «Я не существую пока не будет вызвана foo().\n» ;
>
>
/* Мы пока не можем обратиться к bar(),
поскольку она ещё не определена. */
/* Теперь мы можем вызвать функцию bar(),
обработка foo() сделала её доступной. */
Все функции и классы PHP имеют глобальную область видимости — они могут быть вызваны вне функции, даже если были определены внутри и наоборот.
PHP не поддерживает перегрузку функции, также отсутствует возможность переопределить или удалить объявленную ранее функцию.
Замечание: Имена функций регистронезависимы для символов ASCII от A до Z , тем не менее, предпочтительнее вызывать функции так, как они были объявлены.
Функции PHP поддерживают как списки аргументов переменной длины, так и значения аргументов по умолчанию. Смотрите также описания функций func_num_args() , func_get_arg() и func_get_args() для более детальной информации.
Можно вызывать функции PHP рекурсивно.
Пример #4 Рекурсивные функции
Замечание: Рекурсивный вызов методов/процедур с глубиной более 100-200 уровней рекурсии может вызвать переполнение стека и привести к аварийному завершению скрипта. В частности, бесконечная рекурсия будет считаться программной ошибкой.
create_function
This function has been DEPRECATED as of PHP 7.2.0, and REMOVED as of PHP 8.0.0. Relying on this function is highly discouraged.
Description
Creates a function dynamically from the parameters passed, and returns a unique name for it.
This function internally performs an eval() and as such has the same security issues as eval() . It also has bad performance and memory usage characteristics, because the created functions are global and can not be freed.
A native anonymous function should be used instead.
Parameters
It is normally advisable to pass these parameters as single quoted strings. If using double quoted strings, variable names in the code need to be escaped carefully, e.g. \$somevar . args
The function arguments, as a single comma-separated string.
The function code.
Return Values
Returns a unique function name as a string, or false on failure. Note that the name contains a non-printable character ( "\0" ), so care should be taken when printing the name or incorporating it in any other string.
Examples
Example #1 Creating a function dynamically, with create_function() or anonymous functions
You can use a dynamically created function, to (for example) create a function from information gathered at run time. First, using create_function() :
Now the same code, using an anonymous function; note that the code and arguments are no longer contained in strings:
The above example will output:
Example #2 Making a general processing function, with create_function() or anonymous functions
Another use could be to have general handler function that can apply a set of operations to a list of parameters:
<?php
function process ( $var1 , $var2 , $farr )
<
foreach ( $farr as $f ) <
echo $f ( $var1 , $var2 ) . «\n» ;
>
>
// create a bunch of math functions
$farr = array(
create_function ( ‘$x,$y’ , ‘return «some trig: «.(sin($x) + $x*cos($y));’ ),
create_function ( ‘$x,$y’ , ‘return «a hypotenuse: «.sqrt($x*$x + $y*$y);’ ),
create_function ( ‘$a,$b’ , ‘if ($a >=0)
create_function ( ‘$a,$b’ , «return \»min(b^2+a, a^2,b) = \».min(\$a*\$a+\$b,\$b*\$b+\$a);» ),
create_function ( ‘$a,$b’ , ‘if ($a > 0 && $b != 0)
);
echo «\nUsing the first array of dynamic functions\n» ;
echo «parameters: 2.3445, M_PI\n» ;
process ( 2.3445 , M_PI , $farr );
// now make a bunch of string processing functions
$garr = array(
create_function ( ‘$b,$a’ , ‘if (strncmp($a, $b, 3) == 0) return «** \»$a\» ‘ .
‘and \»$b\»\n** Look the same to me! (looking at the first 3 chars)»;’ ),
create_function ( ‘$a,$b’ , ‘return «CRCs: » . crc32($a) . «, «.crc32($b);’ ),
create_function ( ‘$a,$b’ , ‘return «similar(a,b) = » . similar_text($a, $b, $p) . «($p%)»;’ )
);
echo «\nUsing the second array of dynamic functions\n» ;
process ( «Twas brilling and the slithy toves» , «Twas the night» , $garr );
?>
Again, here is the same code using anonymous functions. Note that variable names in the code no longer need to be escaped, because they are not enclosed in a string.
<?php
function process ( $var1 , $var2 , $farr )
<
foreach ( $farr as $f ) <
echo $f ( $var1 , $var2 ) . «\n» ;
>
>
echo «\nUsing the first array of dynamic functions\n» ;
echo «parameters: 2.3445, M_PI\n» ;
process ( 2.3445 , M_PI , $farr );
// now make a bunch of string processing functions
$garr = array(
function( $b , $a ) < if ( strncmp ( $a , $b , 3 ) == 0 ) return "** \" $a \" " .
«and \» $b \»\n** Look the same to me! (looking at the first 3 chars)» ; >,
function( $a , $b ) < return "CRCs: " . crc32 ( $a ) . ", " . crc32 ( $b ); >,
function( $a , $b ) < return "similar(a,b) color: #007700">. similar_text ( $a , $b , $p ) . «( $p %)» ; >
);
echo «\nUsing the second array of dynamic functions\n» ;
process ( «Twas brilling and the slithy toves» , «Twas the night» , $garr );
?>
The above example will output:
Example #3 Using dynamic functions as callback functions
Perhaps the most common use for dynamic functions is to pass them as callbacks, for example when using array_walk() or usort() .
The above example will output:
Sorting strings from longest to shortest with create_function() :
PHP — Функции
От автора: функции PHP похожи на функции других языков программирования. Функция представляет собой фрагмент кода, который принимает другой код в качестве параметра, выполняет определенную обработку и возвращает значение.
Мы уже рассмотрели много таких функций, например fopen() и fread() и т.д. Это встроенные функции, но PHP предоставляет нам возможность создавать собственные функции. Вы должны четко понимать, что существуют два отдельных аспекта:
Создание функции PHP
Вызов функции PHP
На самом деле вам вряд понадобиться создавать свою собственную функцию, потому что в PHP уже доступны тысячи функций из библиотек, созданных для разных сфер применения, и вам просто нужно вызвать нужную функцию. Полный перечень функций вы можете найти в Справочнике по функциям PHP.
Профессия PHP-разработчик с нуля до PRO
Готовим PHP-разработчиков с нуля
Вы с нуля научитесь программировать сайты и веб-приложения на PHP, освоите фреймворк Laravel, напишете облачное хранилище и поработаете над интернет-магазином в команде. Сможете устроиться на позицию Junior-разработчика.
Создание функции PHP
Собственную PHP-функцию создать очень просто. Предположим, вы хотите создать функцию PHP, которая просто выводит в браузере короткое сообщение, когда вы ее вызываете. В следующем примере мы создаем функцию writeMessage(), а затем вызывает ее сразу после создания.
Обратите внимание, что при создании функции ее имя должно начинаться с ключевого слова function, и весь код PHP должен быть помещен внутри скобок < >, как в приведенном ниже примере:
Функции в PHP
В PHP существует две основные формы функций: встроенные и пользовательские.
Для определения пользовательской функции используется ключевое слово function.
Пример 1
Начиная с версии PHP 4.0 можно использовать значения аргументов, подставляемые по умолчанию.
Пример 2
Примечание: Указанный ниже код будет отрабатывать не так, как Вы возможно ожидаете. Переменная $full во всех случаях будет true.
Передача аргумента по ссылке
Аргументы можно передавать по ссылке. Тогда все изменения, сделанные с аргументом в теле функции, отразятся на самой переменной.
Пример 3
Возврат значений
Для возврата значений из функции используется оператор return. Можно вернуть несколько значений, если применить список list().
Пример 4
Динамические функции
В PHP можно использовать динамические функции. Это означает, что если некоторой переменной присвоено имя функции, то с этой переменной можно обращаться точно так же, как с самой функцией.
Пример 5
Глобальные переменные
Чтобы переменная, созданная вне функции, была доступна внутри функции, надо объявить ее глобальной с помощью инструкции global.
Пример 6
Статические переменные
Чтобы переменная сохраняла свое значение между вызовами функции, нужно объявить ее статической с помощью инструкции static.
Пример 7
Была создана и проинициализирована переменная $ss. По отношению к функции funct( ) эта переменная останется локальной. При втором и последующих вызовах функции funct( ) инициализация игнорируется, а запоминается последнее присвоенное значение.