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

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

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

<?php

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

Определение собственных функций значительно упрощает написание и поддержку программ. Функции позволяют объединять сложные (составные) операции в одну. Например, отправка письма на сайте - это достаточно сложный процесс, включающий в себя взаимодействие с внешними системами (интернет). Благодаря возможности определять функции, вся сложность может быть скрыта за простой функцией:

<?php

namespace Some\Email\Package\send;

$email = '[email protected]';
$title = 'Помогите';
$body = 'Я написал историю успеха, как я могу получить скидку?';

// Один маленький вызов — и много логики внутри
send($email, $title, $body);

Создадим нашу первую функцию. Её задача вывести на экран следующий текст:

Today is: December 5
<?php

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

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

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

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

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

// Вызов функции
showCurrentDay();
  1. Запустите программу снова и удостоверьтесь, что в правой части на экран вывелся текст:
Today is: December 5

Всё, что описывается внутри фигурных скобок {}, называется телом функции. Внутри тела можно описывать любой код. Считайте, что это маленькая самостоятельная программа, набор произвольных инструкций. Тело выполняется ровно в тот момент, когда запускается функция. Причём каждый вызов функции запускает тело независимо от других вызовов. Кстати, тело может быть пустым:

<?php

// Минимальное определение функции, которая ничего не делает
function noop() {};

noop(); // вызов есть, а смысла нет
// Такая функция тоже бывает полезна,
// но это относится к продвинутым темам

Понятие «создать функцию» имеет много синонимов: «реализовать», «определить» и даже «заимплементить» (от слова implement). Все они встречаются в повседневной практике на работе.

Задание

Реализуйте функцию printMotto(), которая печатает на экран фразу Winter is coming.

<?php

printMotto(); // => Winter is coming

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


Советы


Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном cообществе
Упражнение доступно только авторизованным пользователям.

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