English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете, как создавать свои собственные пользовательские функции в PHP.
Функции являются независимыми блоками кода для выполнения конкретных задач.
PHP имеет огромную коллекцию встроенных функций, которые вы можете напрямую вызывать в своих скриптах PHP для выполнения конкретных задач, таких как: gettype(), print_r(), var_dump и т.д.
Пожалуйста, обратитесь к разделу справки PHP, чтобы получить полный список полезных встроенных функций PHP.
Кроме встроенных функций, PHP позволяет вам определять свои собственные функции. Это метод создания повторно используемого кода для выполнения конкретных задач, который можно хранить и поддерживать отдельно от основного программного обеспечения. Вот некоторые из преимуществ использования функций:
Функции уменьшают повторение кода в программе - Функция позволяет вам извлечь часто используемые блоки кода в один компонент. Теперь вы можете вызвать эту функцию в любом месте скрипта, чтобы выполнить ту же задачу, не копируя и вставляя повторно тот же блок кода.
Функции делают поддержку кода более легкой - Поскольку функция может быть создана один раз и использоваться многократно, любые изменения, внесенные в нее, автоматически реализуются во всех местах без необходимости вносить изменения в несколько файлов.
Функции позволяют легче устранять ошибки - При разделении программы на функции, если возникает любая ошибка, вы точно знаете, какая функция вызвала ошибку и где можно найти ее. Таким образом, исправление ошибки становится гораздо проще.
Функции можно повторно использовать в других приложениях - Поскольку функции отделены от остальной части скрипта, их можно легко повторно использовать в других приложениях, просто включив файл php, содержащий эти функции.
В следующем разделе мы покажем, как легко определить свои функции в PHP.
Основная грамматика создания пользовательских функций может быть дана:
function functionName(){ //Код для выполнения }
Объявление пользовательской функции начинается с слова function, за которым следует имя создаваемой функции, затем следуют скобки, то есть (), и, наконец, код функции помещается между фигурными скобками { }.
Это пример пользовательской функции, которая показывает сегодняшнюю дату:
<?php // Определение функции function whatIsToday(){ echo "Today is " . date('l', mktime()); } // Вызов функции whatIsToday(); ?>Проверьте, посмотрите‹/›
Внимание:Имя функции должно начинаться с буквы или знака подчеркивания, а не с цифры, и может состоять из дополнительных букв, цифр или знаков подчеркивания. Имя функции не зависит от регистра.
Вы можете指定 параметры при определении функции, которая принимает значения в время выполнения. Работа параметров аналогична占位符 переменным в функции; они заменяются значениями, предоставленными при вызове функции (называемыми параметрами).
function myFunc($oneParameter, $anotherParameter){ //Код для выполнения }
Вы можете определить любое количество параметров по своему усмотрению. Однако, для каждого параметра, который вы указываете, при вызове функции необходимо передать соответствующий параметр функции.
В следующем примере функция getSum() принимает два целых значения в качестве параметров, просто их суммирует и затем показывает результат в браузере.
<?php // Определение функции function getSum($num1, $num2){ $sum = $num1 + $num2; echo "Сумма двух чисел $num1 и $num2 равна: $sum"; } // Вызов функции getSum(10, 20); ?>Проверьте, посмотрите‹/›
Вывод кода будет следующим:
Сумма двух чисел 10 и 20 равна: 30
Совет:Параметр - это значение, которое вы передаете функции, параметр - это переменная, которая принимает параметры в функции. Однако, в обычном использовании эти термины можно互换ably, то есть параметр - это аргумент.
Вы также можете создать функцию с опциональными параметрами - просто вставьте имя параметра, за которым следует знак равенства (=), а затем значение по умолчанию, как показано ниже.
<?php // Определение функции function customFont($font, $size=1.5){ echo "<p style="font-family: $font; font-size: {$size}em;">Hello, world!</p>"; } // Вызов функции customFont("Arial", 2); customFont("Times", 3); customFont("Courier"); ?>Проверьте, посмотрите‹/›
Как вы можете видеть, третий вызов customFont () не включает второй параметр. Это приведет к тому, что PHP-движок будет использовать значение по умолчанию для параметра $size, то есть 1.5.
Функция может использовать оператор return для возврата значения обратно к скрипту, который её вызвал. Это значение может быть любым типом, включая массивы и объекты.
<?php // Определение функции function getSum($num1, $num2){ $total = $num1 + $num2; return $total; } // Вывод возвращаемого значения echo getSum(5, 10); // Вывод: 15 ?>Проверьте, посмотрите‹/›
Функция не может возвращать несколько значений. Однако, вы можете получить аналогичный результат, вернув массив, как показано в следующем примере.
<?php // Определение функции function divideNumbers($dividend, $divisor){ $quotient = $dividend / $divisor; $array = array($dividend, $divisor, $quotient); return $array; } // Передача переменной как массива для назначения list($dividend, $divisor, $quotient) = divideNumbers(10, 2); echo $dividend; // Вывод: 10 echo $divisor; // Вывод: 2 echo $quotient; // Вывод: 5 ?>Проверьте, посмотрите‹/›
В PHP есть два способа передавать параметры функции: передача по значению и передача по ссылке. По умолчанию параметры функции передаются по значению, поэтому если значение параметра изменяется в функции, это не влияет на её внешнюю среду. Однако, чтобы функция могла изменять свои параметры, они должны передаваться по ссылке.
Метод передачи параметра по ссылке заключается в добавлении символу амперсанда (&) перед именем параметра в определении функции, как показано в следующем примере:
<?php /* Определите функцию умножения числа и возвращаем новый значение */ function selfMultiply(&$number){ $number *= $number; return $number; } $mynum = 5; echo $mynum; // Вывод: 5 selfMultiply($mynum); echo $mynum; // Вывод: 25 ?>Проверьте, посмотрите‹/›
Вы можете объявить переменные в любом месте PHP-скрипта. Однако место объявления переменной определяет область их видимости в PHP-программе, то есть где переменные могут быть использованы или доступны. Эта доступность называетсяОбласть действия переменных.
По умолчанию переменные, объявленные внутри функции, являются локальными переменными и не могут быть доступны или изменены извне функции, как показано в следующем примере:
<?php // Определение функции function test(){ $greet = "Hello World!"; echo $greet; } test(); // Вывод: Hello World! echo $greet; // Возникает ошибка неопределенной переменной ?>Проверьте, посмотрите‹/›
Таким же образом, если вы пытаетесь доступ к переменной извне функции или импортировать переменную изнутри функции, вы получите ошибку неопределенной переменной, как показано в следующем примере:
<?php $greet = "Hello World!"; // Определение функции function test(){ echo $greet; } test(); // Генерируется ошибка неопределенной переменной echo $greet; // Вывод: Hello World! ?>Проверьте, посмотрите‹/›
Как можно увидеть из предыдущего примера, переменные, объявленные внутри функции, не могут быть доступны извне, и наоборот, переменные, объявленные вне функции, не могут быть доступными внутри функции. Это разделение уменьшает вероятность того, что переменные в функции будут зависеть от переменных в основном программном коде.
Совет:Можно использовать одинаковые имена переменных в различных функциях, так как локальные переменные могут быть распознаны только функцией, в которой они были объявлены.
В некоторых случаях вам нужно передать переменные из основного программного кода в функцию, и наоборот. В этом случае можно использовать ключевое слово global перед переменной в функции. Это ключевое слово преобразует переменную в глобальную, делая ее видимыми или доступными как внутри, так и вне функции, как показано в следующем примере:
<?php $greet = "Hello World!"; // Определение функции function test(){ global $greet; echo $greet; } test(); // Вывод: Hello World! echo $greet; // Вывод: Hello World! // Присваивание нового значения переменной $greet = "Goodbye"; test(); // Вывод: Goodbye echo $greet; // Вывод: Goodbye ?>Проверьте, посмотрите‹/›
Вы узнаете оPHP классы и объектыВ этой главе вы найдете больше информации о видимости и контроле доступа.
Рекурсивные функции — это функции, которые вызывают себя снова и снова до тех пор, пока не будут выполнены условия. Рекурсивные функции обычно используются для решения сложных математических вычислений или обработки глубоко вложенных структур, например, для печати всех элементов глубоко вложенного массива.
Примеры показывают, как работают рекурсивные функции.
<?php //Определение рекурсивной функции function printValues($arr) { global $count; global $items; //Проверка, является ли $arr массивом if(!is_array($arr)){ die("ERROR: Input is not an array"); } /* Пробегитесь по массиву, если value сам является массивом, вызовите рекурсивно Функция добавляет найденные значения в массив результатов и для каждого найденного значения increments счетчик */ foreach($arr as $a){ if(is_array($a)){ printValues($a); } else{ $items[] = $a; $count++; } } //Возвращение总数和值 в массиве return array('total' => $count, 'values' => $items); } //Определение вложенных массивов $species = array( "birds" => array( "Eagle", "Parrot", "Swan" ), "mammals" => array( "Human", "cat" => array( "Lion", "Tiger", "Jaguar" ), "Elephant", "Monkey" ), "reptiles" => array( "snake" => array( "Cobra" => array( "Король кобра" "Египетский кобра" ), "Viper", "Anaconda" ), "Crocodile", "Dinosaur" => array( "T-rex", "Alamosaurus" ) ) ); //Вычисление и печать значений вложенных массивов $result = printValues($species); echo $result['total'] . ' value(s) found: '; echo implode(', ', $result['values']); ?>Проверьте, посмотрите‹/›
Внимание:При создании рекурсивных функций следует быть осторожными, так как неправильное написание кода может привести к бесконечному циклу вызовов функции.