Создание (определение) функции

Пора научиться создавать собственные функции! Код, в котором создаётся функция, называется определением функции.

Вот шаблон определения простой функции:

function имяФункции()
{
  тело функции, т.е. код
}

Создадим нашу первую функцию. У неё будет одна задача: выводить на экран текст Today is: December 5.

Нужно назвать функцию так, чтобы из названия была понятна её задача. Давайте дадим ей имя showDate:

function showDate()
{
    $text = 'Today is: December 5';
    print_r($text);
}

В нашей функции только две строчки кода, но их может быть сколько угодно. Функции можно считать программами внутри программ.

Чтобы на 100% понять происходящее, обязательно сделайте следующее:

  1. Зайдите на https://repl.it/languages/php. Это онлайн-интерпретатор PHP.
  2. В левой части введите код примера выше.
  3. Запустите программу нажатием на “RUN ▶”.
  4. Программа выполнится, но на экран ничего не выведется, потому что в программе есть только определение функции, но не запуск.
  5. Чтобы запустить функцию, нужно вызвать её. Добавьте к программе вызов:
  showDate(); // => Today is: December 5
  1. Запустите программу снова и удостоверьтесь, что в правой части на экран вывелся текст.

Соберём всё вместе. Вот полная программа, c определением функции и вызовом:

<?php

function showDate()
{
    $text = 'Today is: December 5';
    print_r($text);
}

showDate();
Today is: December 5

Мы могли бы использовать подобную функцию на сайте или в какой-нибудь программе чтобы выводить текущую дату на экран. Но в текущем виде функция не справится с задачей, ведь она всегда выводит Today is: December 5.

Давайте улучшим функцию так, чтобы она принимала дату в качестве аргумента и выводила её на экран.

Определим и вызовем нашу обновленную функцию:

function showDate($text)
{
    print_r("Today is: {$text}");
}

showDate('January 29');
The date is: January 29

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

Теперь понятно, зачем нужны были круглые скобки после имени функции: в них можно указать аргументы. Теперь наша функция принимает один аргумент — $text.

Заметьте: мы не создаём переменную $text, но используем её в теле функции. PHP работает так: переменная сама создаётся при вызове и указанное значение (в нашем примере — 'January 29') записывается в эту переменную.

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

function showDate($bla)
{
    print_r("Today is: {$bla}");
}

showDate('January 29');

то поведение функции не изменится. Но такое бессмысленное имя для аргумента — плохая практика.


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

Полный пример определения функции с несколькими аргументами и её вызова:

<?php

function showDate($month, $day)
{
    print_r("Today is: {$month} {$day}");
}

showDate('January', '29');
The date is: January 29

Главное — помнить про порядок: в каком порядке аргументы стоят при определении функции, в таком же порядке они должны передаваться при вызове.

Задание

Реализуйте функцию printJaimesLine, которая принимает один аргумент — строку, и выводит реплику на экран в формате JAIME: переданная_строка.

Как назвать переменную, которая будет аргументом — решайте сами.

Наша система содержит код, скрытый от вас. В этом упражнении скрыт вызов функции printJaimesLine. Так мы проверяем ваше решение.

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

<?php

printJaimesLine("Farewell, my friend...");
Farewell, my friend...

Советы

Упражнение доступно только авторизованным пользователям.

Пожалуйста, авторизуйтесь с помощью учётной записи GitHub, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт на GitHub.