Что такое функция php
Функции представляют собой блок инструкций, которые многократно можно вызывать в различных частях программы. Функции позволяют разделять программуу на меньшие функциональные части.
Общий синтаксис определения функции выглядит следующим образом:
function имя_функции([параметр [, . ]]) < // Инструкции >
Определение функции начинается с ключевого слова function , за которым следует имя функции. Имя функции должно начинаться с алфавитного символа или подчеркивания, за которыми может следовать любое количество алфавитно-цифровых символов или символов подчеркивания.
После имени функции в скобках идет перечисление параметров. Даже если параметров у функции нет, то просто идут пустые скобки. Затем в фигурных скобках идет тело функции, содержащее набор инструкций.
Определим простейшую функцию:
Данная функция назывется hello . Она не имеет параметров, поэтому после названия функции идут пустые скобки. Блок функции содержит только одну инструкцию, которая выводит сообщение «Hello PHP».
Чтобы функция сработала, ее надо вызвать. Для вызова функции указывается ее имя, после которого в скобках идут значения для ее параметров (если, кончено, она имеет параметры):
название_функции (значения_для_параметров_функции);
Например, вызовем вышеопределенную функцию hello :
hello(); // вызов функции ?>
Поскольку для функции hello мы не определили никаких параметров, то при ее вызове указываем название функции и после нее пустые круглые скобки. Заканчивается вызов функции точкой с запятой.
В итоге браузер выведет сообщение:
Hello PHP
Преимуществом функций является то, что, определив однажды, мы можем многократно их вызывать в различных частях программы:
METANIT.COM Hello PHP"; > hello(); hello(); hello(); ?>
Стоит отметить, что в данном случае сначала определяется функция, а затем она вызывается. Но мы также можно сделать наоборот:
Тем не менее есть исключения. В частности, при определении функции при определенном условии.
// hello(); // здесь будет ошибка if(true) < function hello() < echo "Hello PHP"; >hello(); >
Что такое функция php
Приведём пример синтаксиса, используемого для описания функций:
Пример #1 Псевдокод для демонстрации использования функций
function foo ( $arg_1 , $arg_2 , /* . */ $arg_n )
echo «Пример функции.\n» ;
return $retval ;
>
?>?php
Внутри функции можно использовать любой корректный 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 Вложенные функции
function foo ()
function bar ()
echo «Я не существую пока не будет вызвана foo().\n» ;
>
>
?php
/* Мы пока не можем обратиться к bar(),
поскольку она ещё не определена. */
/* Теперь мы можем вызвать функцию bar(),
обработка foo() сделала её доступной. */
Все функции и классы PHP имеют глобальную область видимости — они могут быть вызваны вне функции, даже если были определены внутри и наоборот.
PHP не поддерживает перегрузку функции, также отсутствует возможность переопределить или удалить объявленную ранее функцию.
Замечание: Имена функций регистронезависимы для символов ASCII от A до Z , тем не менее, предпочтительнее вызывать функции так, как они были объявлены.
Функции PHP поддерживают как списки аргументов переменной длины, так и значения аргументов по умолчанию. Смотрите также описания функций func_num_args() , func_get_arg() и func_get_args() для более детальной информации.
Можно вызывать функции PHP рекурсивно.
Пример #4 Рекурсивные функции
function recursion ( $a )
if ( $a < 20 ) echo " $a \n" ;
recursion ( $a + 1 );
>
>
?>?php
Замечание: Рекурсивный вызов методов/процедур с глубиной более 100-200 уровней рекурсии может вызвать переполнение стека и привести к аварийному завершению скрипта. В частности, бесконечная рекурсия будет считаться программной ошибкой.
User Contributed Notes
There are no user contributed notes for this page.
- Функции
- Функции, определяемые пользователем
- Аргументы функции
- Возврат значений
- Обращение к функциям через переменные
- Встроенные функции
- Анонимные функции
- Стрелочные функции
- Callback-функции как объекты первого класса
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
PHP: Определение и вызов функции
Функция — это именованный блок кода, в данном случае на языке PHP, который определяется один раз, а затем может вызываться на исполнение сколько угодно раз.
Определение функции выполняется с помощью ключевого слова function за которым указываются следующие компоненты:
- Идентификатор , определяющий имя функции. Он будет использован для создания новой переменной, которой будет присвоена функция. Имена функций следуют тем же правилам, что и именование переменных. Примечание: имена функций не чувствительны к регистру букв.
- Пара круглых скобок вокруг списка из нуля или более идентификаторов, разделенных запятыми. Эти идентификаторы будут определять имена параметров функции. В теле функции они используются в качестве локальных переменных.
- Пара фигурных скобок с нулем или более инструкций. Эти инструкции составляют тело функции: они выполняются при каждом вызове функции.
Синтаксис определения функции выглядит следующим образом:
function имя_функции([параметры])
Квадратные скобки ( [] ) означают необязательность. Теперь приведем простой пример определения функции:
Для вызова функции используется оператор вызова, представляющий из себя пару круглых скобок. Завершается вызов функции как и все инструкции точкой с запятой ( ; ):
// вызов функции hello(); ?>
При вызове функции исполняются инструкции, расположенные в ее теле.
Функции допускается определять в любом месте программы, это значит, что они не обязательно быть определены до их использования, исключая тот случай, когда функции определяются условно:
> /* Теперь мы можем вызывать функцию foo(), поскольку $makefoo была интерпретирована как true */ foo(); function bar() < echo "Я существую сразу с начала старта программы.\n"; >?>
Все функции в PHP имеют глобальную область видимости — они могут быть вызваны вне функции, даже если были определены внутри и наоборот:
> /* пока нельзя вызвать func2(), поскольку она еще не определена. */ func1(); /* Теперь можно вызвать функцию func2(), вызов func1() сделал ее доступной. */ func2(); ?>
Чаще всего функции работают с каким-либо переданными ей значениями. Для того, чтобы функции можно было передать некоторые значения, в ней должны быть указаны параметры. Эти параметры по сути являются обычными переменными, которые инициализируются переданными значениями при вызове функции.
С этой темой смотрят:
- Параметры и аргументы функции
- Анонимные функции
- Литералы, идентификаторы и инструкции
- Переменные
- Область видимости
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2023 © puzzleweb.ru | razumnikum.ruPHP: Что такое функция
Важно понимать, что такое PHP функция. Мы разберём, что такое PHP функция, сколько существует PHP функций, и рассмотрим примеры PHP функций.
PHP функция предоставляет код, который PHP-скрипт может вызвать для выполнения задачи, такой как count() , file_get_contents() , и header() . Язык программирования PHP поддерживает как процедурную, так и объектно-ориентированную парадигмы программирования. В процедурном пространстве функции являются ключевым строительным блоком для разработки и поддержки приложений.
Какую роль PHP функции играют в разработке
Использование функций помогает оптимизировать разработку за счёт:
- Внедрения модульного подхода к разработке.
- Предоставление логики, которую можно повторно использовать в других приложениях.
- Отрицание необходимости заново разрабатывать и переписывать одну и ту же логику снова и снова.
Функции в PHP могут быть встроенными или определяемыми пользователем:
- Встроенные PHP функции поставляются со средами выполнения PHP и их расширениями, и их можно вызвать из любого места скрипта (например, print() , var_dump() , mysql_connect() и т. д.).
- Пользовательские функции — функции создаваемые разработчиком в своём приложении (или сторонних библиотеках).
Независимо от того, является ли функция встроенной или определяемой пользователем:
- Вызываемые функции всегда должны начинаться с ключевого слова function .
- PHP-код функции должен быть заключён в фигурные скобки. < >.
- Имя функции должно начинаться с буквы или подчёркивания, с не с цифры. (Имена функций начинающихся с подчёркивания, обычно зарезервированы для суперглобальных переменных, которые содержат такую информацию, как сессия или cookie)
- Их имена не чувствительны к регистру.
Сколько функций в PHP
В PHP содержится около 700 функций используемых для разнообразных задач.
Примеры PHP функций
Пример PHP функции: Определения и Атрибуты
Имея вышеописанное определение, давайте рассмотрим некоторые определения и атрибуты функций:
function x5($number)
return($number * 5);
>
$multiple_number = x5(10); // 50Выше приведён полный сценарий, хотя он короткий и простой. Это конкретная функция просто возвращает значение, с которым была вызвана функция, умноженное на пять. Вне определения функции мы видим вызов функции. Функция вызывается просто путём ссылки на функцию и последующего представления аргументов функции в круглых скобках.
Ключевое слово function начинает определение функции. В данном случае имя функции x5 . Переменные в скобках указывают аргументы функции и то, как на них будут ссылаться внутри функции. В этом случае есть один аргумент, на который будет ссылаться переменная $number внутри функции. (Позже мы поговорим о необязательных аргументах и области видимости переменных).
Пример PHP функции: Необязательные Аргументы
Давайте рассмотрим пример PHP функции с необязательными аргументами:
function optionalDemo($greeting, $count = 1)
for ($i = 0; $i $count; $i++)
echo $greeting. "\n";
>
>
optionalDemo("Hello");
optionalDemo("Good Bye" , 2);Как и в предыдущем примере, это полный сегмент кода. Выражение на котором нужно сосредоточиться, — это определение функции. Обратите внимание, что эта функция ожидает два аргумента, на которые внутри функции будут ссылаться как $greeting и $count . Кроме того, обратите внимание, что второму параметру, Scount , присвоено значение по умолчанию 1 . Это работает следующим образом: если функция вызывается с одним параметром (как, при первом вызове функции), то второму параметру будет присвоено значение по умолчанию 1 . Это, в свою очередь, приведёт к однократному выполнению цикла for внутри функции.
Во втором вызове optionalDemo предоставляются два значения. Поэтому значение, указанное в вызове, используется для второго аргумента ( $count ), а не значение по умолчанию в определение функции. В результате цикл внутри функции выполниться дважды.
Пример PHP функции: Область видимости переменных
Изучая функции, важно понимать концепцию области видимости переменных. Проще говоря, поведение области действия переменных по умолчанию заключается в том, что переменные должны быть ограничены функцией, в которой они определены. Опять, пример — лучший способ продемонстрировать:
function scopedemo($fruit)
$fruit = 20;
echo $fruit; // 20
>
$fruit = 10;
scopedemo($fruit);
echo $fruit; //10В этом примере показано определение функции, а также вызов функции. Следует отметить, что переменная с именем $fruit используется как внутри, так и вне функции, что заставляет подумать, что она представляет одно и то же значение (например, одну и ту же область памяти), но это не так.
Как показывают комментарии в приведённом выше коде, $fruit внутри функции представляет другое значение/область памяти, чем $fruit вне функции. Если вы хотите получить доступ к одному и тому же значению/области памяти внутри и вне функции, можно использовать ключевое слово global .
Глядя на приведённый выше пример, если бы оператор global $fruit был добавлен в определение функции, то ссылка на него внутри функции была бы тем же значением или областью памяти вне функции. Итак, в этом случае $fruit внизу пример кода будет иметь значение 20 .
Пример PHP функции: Переменные как Ссылка
Наконец, переменные могут быть переданы в качестве ссылки. Передача по ссылке приводит к добавлению новой записи в таблицу символов PHP, которая ссылается на внутреннюю структуру данных, содержащую тип и значение переменной. Рассмотрим приведённый выше пример в последний раз. Если бы вызов scopedemo использовал амперсанд & перед переменной (например, scopedemo(&$fruit) ), то внутри функции в таблицу символов была бы добавлена новая запись для той же структуры данных, представляющей значения переменных. Это, по сути, ограничивает область действия переменной как внутри, так и вне функции.
Пример PHP функции: Рекурсия
Более продвинутый атрибут функций — рекурсия. Рекурсия — это когда функция пишется так, чтобы она могла сама себя вызывать. Рекурсивная функция должна содержать конечное условие приводящее к завершению функции.
Как правило, при написании рекурсивной функции будет базовый случай проверяющийся внутри функции, и функция будет продолжать вызывать сама себя до тех пор, пока базовый случай не будет удовлетворён. Примеры рекурсивной функции включают вычисление факториалов и чтение дерева файлов и/или каталогов. Вот пример того, как будет выглядеть код.
function factorial($n)
if ($n 2)
return 1;
> else
return ($n * factorial($n - 1));
>
>Пример PHP функции: Анонимные Функции
Последний атрибут, который мы рассмотрим, — это анонимная функция. Хотя определение анонимной функции такое же, как у определяемой пользователем функции, а именно то, что она принимает аргументы, работает с переменными и содержит логику кода, функция не имеет имени и заканчивается точкой с запятой. Это связано с тем, что в отличие от обычных функций представляющих собой конструкцию кода, анонимная функция представляет собой выражение.
Рассмотрим более ранний пример, представленный в виде анонимной функции:
function($number)
return($number * 5);
>;Код этой анонимной функции никогда не будет вызван. Точка с запятой в конце определения гарантирует, что функция рассматривается как выражение. Поскольку она обрабатывается как выражение, её можно присвоить переменной и вызывать путём ссылки на переменную. Её так же можно передать другой функции, что делает анонимную функцию — функцией обратного вызова (callback функцией).
Ещё одно замечание по поводу анонимных функций заключается в том, что они могут быть возвращены из другой функции. Это называется замыканием (closure).
Пример PHP функции: Новый синтаксис анонимной функции
В PHP 7.4 был представлен новый синтаксис анонимной функции:
$double = fn($param1) => 2*$param1;
Использование стрелочной функции ( => ) позволяет использовать сокращённую форму записи замыкания для создания однострочных функций. Это полезно при написании более компактного кода.
Также обратите внимание, что ключевое слово return необязательно для одиночных выражений. В приведённом выше примере возвращается 2*$param1 .
Анонимные функции наиболее полезны в качестве значений параметров обратного вызова, но у них есть и другие варианты использования. Это одноразовый функции, когда вам нужна функция, которую вы хотите использовать только один раз.
PHP Функции и методы: В чём разница
В начале этой статьи я упомянул, что в процедурном мире PHP функции похожи на то, что объектно-ориентированные разработчики называют методами. Давайте посмотрим на последний пример:
class car
public $make;
private $model;
function __construct($make, $model)
$this->make = $make;
$this->model = $model;
>
function printMake()
echo $this->make . "\n";
>
>
$mustang = new car("Ford", "Mustang");
$mustang->printMake();
$camaro = new car("Chevrolet", "Camaro");
$camaro->printMake();
/*
Ford
Chevrolet
*/Посмотрите на выделенную часть приведённого выше кода. Обратите внимание, что хотя мы находимся в определении класса, ключевое слово function определяет то, что объектно-ориентированные разработчики называют методом. Так что на самом деле метод может быть назван другим именем — функция.
Как и функции, методы могут работать с аргументами и содержать блоки кода.
Однако в объектно-ориентированном мире:
- Методы работают со значениями, содержащимися в копии класса (называемой объектом).
- В методе может быть несколько итераций одного и того же определения класса в разных переменных (или даже в массивах объектов).
Вывод заключается в том, что определение метода следует тому же формату, что и определение функции, обсуждаемое в этом блоге.