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

Синтаксический сахар

PHP: Синтаксический сахар

В программировании часто встречаются повторяющиеся конструкции. В PHP, как и во многих других языках, есть возможность сокращать их запись. Такие упрощения называются синтаксическим сахаром, потому что они делают процесс написания кода немного проще и приятнее, «подслащивая» его :)

Сокращенные формы присваивания

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

<?php

$index = $index + 1;
$count = $count * 2;
$total = $total - 5;
$price = $price / 3;

PHP позволяет записывать это короче, с помощью комбинированных операторов:

<?php

$index += 1; // то же самое, что $index = $index + 1
$count *= 2; // то же самое, что $count = $count * 2
$total -= 5; // то же самое, что $total = $total - 5
$price /= 3; // то же самое, что $price = $price / 3

Важно понимать, что отличия исключительно в способе записи. Интерпретатор превращает сокращенную конструкцию в развернутую.

В циклах такие сокращения встречаются особенно часто. В них мы обычно меняем счетчик и накапливаем результат:

<?php

$sum = 0;
$index = 1;

while ($index <= 5) {
    $sum += $index;   // то же самое, что $sum = $sum + $index
    $index += 1;      // то же самое, что $index = $index + 1
}

print_r($sum); // => 15

Без сокращений тело цикла было бы длиннее:

<?php

while ($index <= 5) {
    $sum = $sum + $index;
    $index = $index + 1;
}

Другие операции

Такая запись работает с числами и с другими типами данных.

Для строк используется оператор конкатенации:

<?php

$text = 'Hello';
$text .= ' World'; // то же самое, что $text = $text . ' World'

Поддерживаемые сокращения

Существует сокращенная форма почти для всех операторов: +=, -=, *=, /=, %=, **=, .=. Все они работают по одному принципу: берут текущее значение переменной, применяют операцию и сохраняют результат в ту же переменную.

Задание

Операторы синтаксического сахара особенно удобны, когда нужно постепенно собрать итоговое значение.

Реализуйте функцию buildProgressBar(), которая принимает количество выполненных шагов и общее количество шагов, а затем возвращает строку-индикатор прогресса.

Выполненные шаги обозначаются символом #, а оставшиеся — символом -. Старайтесь не использовать встроенные функции работы со строкой в своем решении.

<?php

buildProgressBar(0, 5); // '-----'
buildProgressBar(3, 5); // '###--'
buildProgressBar(5, 5); // '#####'

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

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

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