---

name: Необязательные параметры функций
theory: |

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

  ```php
  <?php

  // Функция возведения в степень
  // Второй параметр имеет значение по умолчанию 2
  function myPow($x, $base = 2)
  {
      return $x ** $base;
  }

  // 3 во второй степени (двойка задана по умолчанию)
  myPow(3); // 3 * 3 = 9
  // три в третьей степени
  myPow(3, 3); // 3 * 3 * 3 = 27
  ```

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

  ```php
  <?php

  function myPrint($text = 'nothing')
  {
      print_r($text);
  }

  myPrint(); // => "nothing"
  myPrint("Hexlet"); // => "Hexlet"
  ```

  Параметров со значениями по умолчанию может быть сколько угодно:

  ```php
  <?php

  function f($a = 5, $b = 10, $c = 100)
  {
    ...
  }
  ```

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

  ```php
  <?php

  // Такой код завершится с ошибкой
  function f($a = 5, $b = 10, $c = 100, $x)
  {
    ...
  }

  // И такой
  function f($a = 5, $b = 10, $x, $c = 100)
  {
    ...
  }

  // А вот такой сработает
  function f($x, $a = 5, $b = 10, $c = 100)
  {
    ...
  }

  // И такой
  function f($x, $y, $a = 5, $b = 10, $c = 100)
  {
    ...
  }
  ```

instructions: |

  Реализуйте функцию `getHiddenCard()`, который принимает на вход номер кредитки (состоящий из 16 цифр) в виде строки и возвращает его скрытую версию, которая может использоваться на сайте для отображения. Если исходная карта имела номер *2034399002125581*,  то скрытая версия выглядит так *\*\*\*\*5581*. Другими словами, функция заменяет первые 12 символов, на звездочки. Количество звездочек регулируется вторым необязательным параметром. Значение по умолчанию — 4.

  ```php
  <?php

  // Кредитка передается внутрь как строка
  getHiddenCard("1234567812345678", 2); // "**5678"
  getHiddenCard("1234567812345678", 3); // "***5678"
  getHiddenCard('1234567812345678'); // "****5678"
  getHiddenCard('2034399002121100', 1); // "*1100"
  ```

  Для выполнения задания вам понадобится функция [str_repeat()](https://www.php.net/manual/ru/function.str-repeat.php), которая повторяет строку указанное количество раз

  ```php
  <?php

  str_repeat('+', 5); // "+++++"
  str_repeat('o', 3); // "ooo"
  ```
