/
Программирование
/
Курс PHP
/

Вызов функции — выражение

PHP: Вызов функции — выражение

Когда мы пишем программы, нам нужно соединять действия друг с другом. Сложение чисел, объединение строк и работа с переменными являются примерами того, как простые шаги можно комбинировать, получая более сложное поведение.

<?php

$rate = 10;
$hours = 5;
$salary = $rate * $hours + 100;
print_r($salary); // => 150

В программировании для этого используется понятие выражение. Оно обозначает конструкцию, которая вычисляется и дает результат. В примере выше $rate * $hours + 100 является выражением, составленным из переменных ($rate, $hours), числового литерала (100) и арифметических операций. Все вместе оно возвращает результат, который можно сохранить в переменную или использовать дальше.

Что нам дает это знание? Мы понимаем, что выражения можно комбинировать бесконечно, постепенно усложняя логику. Каждое новое выражение становится частью большего:

<?php

$bonus = 50;
// Выражение из множества операций
$salary = ($rate * $hours + $bonus) * 12 - 500;
print_r($salary);

Здесь несколько выражений объединены в одно, и результат стал еще сложнее. Именно так и строятся программы. Маленькие шаги складываются в большие конструкции. Поэтому в программировании невозможно заранее заучить все комбинации. Гораздо важнее понять, как выражения соединяются между собой в нужный результат.

Выражения как аргументы функций

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

<?php

// Здесь аргумент функции print_r — это число 150
print_r(150);

// А здесь аргумент — выражение, которое сначала вычисляется
print_r(10 * 15); // => 150

// Можно комбинировать еще сложнее
$rate = 10;
$hours = 15;
$bonus = 50;
print_r($rate * $hours + $bonus); // => 200

Функция print_r() просто получает готовое значение и выводит его на экран. Способ получения этого значения функции безразличен. Именно поэтому вызовы функций отлично сочетаются с любыми выражениями.

Вызов функции внутри функции

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

<?php

$name = 'python';

// Вызов strlen($name) возвращает 6
// Этот результат сразу используется как аргумент print_r()
print_r(strlen($name)); // => 6

Здесь strlen($name) вычисляется первым и возвращает число 6. Затем это значение подставляется в вызов print_r(). Такая комбинация может быть сколько угодно глубокой. Результат одной функции можно передать в другую, потом в следующую.

Чтобы правильно читать такие конструкции, нужно помнить про порядок вызова.

  1. Сначала выполняется функция, которая находится «внутри», в нашем случае strlen($name).
  2. Затем ее результат подставляется на место вызова.
  3. После этого выполняется внешняя функция, в данном случае print_r().

Таким образом, код print_r(strlen($name)) можно мысленно разложить так:

print_r(strlen('python'))

Шаг 1:  strlen('python')  →  6
Шаг 2:  print_r(6)        →  выводит 6
  1. strlen($name)6
  2. print_r(6)
  3. На экране появляется 6.

Этот принцип работает всегда. Сначала вычисляются вложенные вызовы, потом внешний.

Использование функций в составе выражений

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

<?php

$name = 'python';

// Вызов strlen($name) возвращает 6
// Мы вычитаем 1, чтобы получить индекс последнего символа
$lastIndex = strlen($name) - 1;
print_r($lastIndex); // => 5

// Можно использовать результат функции в арифметике
$text = 'hexlet';
$double = strlen($text) * 2;
print_r($double); // => 12

Здесь вызовы strlen($name) и strlen($text) являются полноценными выражениями. Они возвращают значения, которые можно комбинировать с числами, переменными и другими операциями.

Задание

Приложение показывает краткую сводку по тексту: его первый и последний символ. Выведите на экран первый и последний символы строки из переменной $text в следующем формате:

First: H
Last: !

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

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются