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(). Такая комбинация может быть сколько угодно глубокой. Результат одной функции можно передать в другую, потом в следующую.
Чтобы правильно читать такие конструкции, нужно помнить про порядок вызова.
- Сначала выполняется функция, которая находится «внутри», в нашем случае
strlen($name). - Затем ее результат подставляется на место вызова.
- После этого выполняется внешняя функция, в данном случае
print_r().
Таким образом, код print_r(strlen($name)) можно мысленно разложить так:
print_r(strlen('python'))
Шаг 1: strlen('python') → 6
Шаг 2: print_r(6) → выводит 6strlen($name)→6print_r(6)- На экране появляется
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: !Постарайтесь создать только одну переменную, в которую сразу запишется нужный текст перед печатью на экран. В этом уроке мы отрабатываем умение собирать составное выражение.
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(). Такая комбинация может быть сколько угодно глубокой. Результат одной функции можно передать в другую, потом в следующую.
Чтобы правильно читать такие конструкции, нужно помнить про порядок вызова.
- Сначала выполняется функция, которая находится «внутри», в нашем случае
strlen($name). - Затем ее результат подставляется на место вызова.
- После этого выполняется внешняя функция, в данном случае
print_r().
Таким образом, код print_r(strlen($name)) можно мысленно разложить так:
print_r(strlen('python'))
Шаг 1: strlen('python') → 6
Шаг 2: print_r(6) → выводит 6strlen($name)→6print_r(6)- На экране появляется
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: !Постарайтесь создать только одну переменную, в которую сразу запишется нужный текст перед печатью на экран. В этом уроке мы отрабатываем умение собирать составное выражение.
Ваше упражнение проверяется по этим тестам
<?php
namespace HexletBasics\CallingFunctions\Expression;
use HexletBasics\Exercise\TestCase;
class SolutionTest extends TestCase
{
public function test()
{
$expected = "First: H\nLast: !";
$this->assertOutput($expected);
}
}Решение учителя откроется через:
20:00
