*/ trait Baz { /** * baz: параметр * * @var string */ protected string $baz = ''; /** * baz: фильтр * * @param string|int|float $target Значение для фильтрации * * @return string|null */ public static function baz($target): ?string { // Очистка if ($sanitized = filter_var($target, FILTER_CALLBACK, array('options' => [self::class, 'phoneNumberRus']))) { // Если очищение вернуло результат // Проверка if ($sanitized !== $target || !preg_match('/^7[0-9]{10}$/', $sanitized)) { // Если очищенное значение не совпадает с отправленным // или если не совпадает с паттерном "7**********" (российский номер) new Error(200, __FUNCTION__); } // В задании было указано: для номеров тип string return (string) $sanitized; } else { new Error(200, __FUNCTION__); } return null; } /** * baz: очистка * * @param string|int|float $target Значение для очистки * * @return string|null */ public static function phoneNumberRus($target): string { // Поиск цифр preg_match_all('/[0-9]*/', $target, $match); // Инициализация $result = ''; // Конкатанация найденных цифр foreach ($match[0] as $number) { $result .= $number; } // Конвертация под Российский номер $result[0] = 7; // В задании было сказано: для номеров тип string return (string) $result; } }