Статьи

Определение и использование функций в PHP

Давайте начнем с определения слова «функция». Функция — это отдельный фрагмент кода, который выполняет определенную задачу (или функцию!). Основным преимуществом использования функций является то, что они многократно используются; если у вас есть задача, которую нужно выполнить несколько раз, функция является идеальным решением. Они могут быть определены вами или PHP (PHP имеет богатую коллекцию встроенных функций). Эта статья будет сосредоточена на функциях, определенных программистом, но кратко коснусь функций PHP, чтобы завершить картину.

Определение функции

Так как выглядит синтаксис для определения функции? Вот простой пример:

<?php function addNumbers($num1, $num2) { $result = $num1 + $num2; return $result; } 

Функция ключевого слова позволяет PHP знать, что ниже, как вы уже догадались, определение функции. Далее, addNumbers — это имя функции. Открывающая и закрывающая скобки содержат аргументы (иногда называемые параметрами), значения, которые вы передадите в функцию при ее вызове. Функции не должны принимать аргументы, в этом случае скобки будут пустыми. Здесь переменные $num1 и $num2 являются произвольными именами, на которые ссылаются, хотя и внутри функции.

Обратите внимание, что две строки оператора в функции заключены в квадратные скобки. Эти строки составляют то, что известно как тело функции. Здесь очень простые операторы: первый принимает значения, переданные функции как $num1 и $num2 , складывает их вместе и сохраняет полученное значение в $result . Затем вторая строка использует return чтобы передать значение $result обратно в вызывающий оператор.

Как и в случае с аргументами, функции также не должны возвращать значения. Они могут быть использованы, например, для расчета, который печатается. Однако важно понимать концепцию возврата значения из функции, поскольку вы, вероятно, будете возвращать значения чаще, чем нет.

Функции не будут выполняться, пока вы не напишете некоторый код для этого. Чтобы вызвать образец функции, вы должны использовать такой оператор:

 <?php $total = addNumbers($loanAmount, $interestAmount); 

Что это значит? Ну, код после = вызывает или вызывает функцию и заставляет ее код работать. Значения, передаваемые в функцию, хранятся в двух переменных: $loanAmount и $interestAmount $loanAmount . Обратите внимание, что эти имена не соответствуют именам аргументов, используемых при определении функции, то есть $num1 и $num2 . Это не важно Важным моментом является то, что функция была определена как имеющая два аргумента, и вы указали два аргумента при ее выполнении. По понятным причинам значения, содержащиеся в переменных $loanAmount и $loanAmount должны быть числовыми, поскольку функция выполняет математическую операцию.

Поскольку в функции использовался return, общая сумма, хранящаяся в $result будет возвращена в оператор, который выполняет функцию. В этом случае значение будет присвоено $total .

При именовании функции имя должно быть уникальным. Он может состоять из букв, цифр и подчеркивания, но не должен начинаться с цифры (те же правила для именования переменной). Таким образом, addNumbers и add_numbers являются допустимыми именами функций, в то время как add numbers не является (встроенный пробел), а также 12add_numbers (начинается с цифры). Назвать вашу функцию abc123 синтаксически правильно, но бесполезно. В идеале имя функции также должно быть значимым.

Как я уже упоминал в начале этой статьи, PHP также определяет некоторые функции. Всегда стоит посмотреть, есть ли в PHP функция, которая делает то, что вы хотите, прежде чем писать свою собственную. Но как вы узнаете, нужно ли вам определять собственную функцию или если PHP предоставляет функцию, которая делает то, что вам нужно? Ответ заключается в ознакомлении с онлайн-документацией. Например, вы можете отформатировать дату. Сначала зайдите на www.php.net и в поле поиска введите «дата». Вам будет представлена ​​информация о функции date() а слева — список связанных функций даты и времени.

Организационные функции

Теперь, когда вы увидели синтаксис функции, следующий шаг — решить, куда поместить код функции.

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

 <?php function hello() { print "<h1>HELLO!</h1>"; print "<p>Welcome to my web site</p>"; } function printBreak($text) { print "$text<br>"; } function addNumbers($num1, $num2) { return $num1 + $num2; } hello(); printBreak("This is a line"); print addNumbers(3.75, 5.645); 

Этот код отображает следующий вывод в браузере:

function test output

Три функции определены, а затем следует код, который их выполняет. Обратите внимание, что функция hello() не имеет аргументов, так как ее цель — просто напечатать приветственное сообщение. Функция printBreak() является аналогичным примером — текст передается как аргумент, на который ссылается функция как переменная $text . Наконец, есть немного измененная версия функции addNumbers() из более ранней версии.

На данный момент функции доступны только в сценарии, в котором они были определены. Если вы хотите сделать их доступными для всех ваших сценариев, лучше поместить их в отдельный файл и включить их. Этот подход означает, что любые изменения, необходимые для ваших функций позже, могут быть сделаны только в одном месте, вместо того, чтобы вносить изменения в несколько сценариев.

Переместите три функции в их собственный файл с именем functions.php . Затем пересмотрите пример для использования require . Теперь это должно выглядеть так:

 <?php require "functions.php"; hello(); printBreak("This is a line"); print addNums(3.75, 5.645); 

Принятие переменного количества аргументов

До сих пор вы имели дело только с функциями, которые принимают фиксированное количество аргументов. Если вы передадите только один аргумент, когда требуется два, вы увидите предупреждающее сообщение, подобное этому:

  Предупреждение: отсутствует аргумент 2 для addNumbers (), вызываемого в C: xampphtdocssitepointfunctions.php в строке 17 и определенного в C: xampphtdocssitepointfunctions.php в строке 9 

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

Вот пример, который был аннотирован комментариями:

 <?php function calcAverage() { // initialize value to be used in calculation $total = 0; // find out how many arguments were given $arguments = func_num_args(); // loop to process each argument separately for ($i = 0; $i < $arguments; $i++) { // add the value in the current argument to the total $total += func_get_arg($i); } // after adding all arguments, calculate the average $average = $total / $arguments; // return the average return $average; } // invoke the function with 5 arguments echo calcAverage(44, 55, 66, 77, 88); // invoke the function with 8 arguments echo calcAverage(12, 34, 56, 78, 90, 9, 8, 7); 

Функция calcAverage() выполняется дважды, каждый раз с разным количеством аргументов. В calcAverage() func_num_args() функция func_num_args() для определения количества переданных аргументов. Цикл for , с которым вы можете или не можете быть знакомы на этом этапе, извлекает каждый аргумент по очереди, используя func_get_arg() и увеличивает сумму в $total . Когда все аргументы получены и обработаны, среднее значение вычисляется, возвращается и печатается с использованием echo .

Резюме

Давайте вспомним некоторые ключевые понятия функций:

  • Более простое обслуживание — используйте функции, чтобы не повторять код для общих задач.
  • Возможность повторного использования — функции могут использоваться в отдельных сценариях и в нескольких сценариях.
  • Гибкость — функции являются гибкими, принимая определенное количество аргументов или переменное количество аргументов с помощью func_num_args() и func_get_arg() .
  • Улучшенная читаемость — разделение функциональности на функции упрощает ваш код и улучшает его читаемость.

Теперь вы должны быть в состоянии создать свои собственные функции или найти соответствующие из обширного выбора PHP.

Изображение через kentoh / Shutterstock