54 lines
1.3 KiB
PHP
54 lines
1.3 KiB
PHP
|
<?php
|
|||
|
|
|||
|
declare(strict_types=1);
|
|||
|
|
|||
|
namespace Mirzaev\Feip\Params;
|
|||
|
|
|||
|
use Mirzaev\Feip\Error;
|
|||
|
|
|||
|
/**
|
|||
|
* Параметр почты
|
|||
|
*
|
|||
|
* @property string $email Почта
|
|||
|
*
|
|||
|
* @package Mirzaev\Feip\Params
|
|||
|
* @author Арсен Мирзаев <red@hood.su>
|
|||
|
*/
|
|||
|
trait Email
|
|||
|
{
|
|||
|
/**
|
|||
|
* Почта: параметр
|
|||
|
*
|
|||
|
* @var string
|
|||
|
*/
|
|||
|
protected string $email = '';
|
|||
|
|
|||
|
/**
|
|||
|
* Почта: фильтр
|
|||
|
*
|
|||
|
* @param string|int|float $target Значение для фильтрации
|
|||
|
*
|
|||
|
* @return string|null
|
|||
|
*/
|
|||
|
public static function email($target): ?string
|
|||
|
{
|
|||
|
// Очистка
|
|||
|
if ($sanitized = filter_var($target, FILTER_SANITIZE_EMAIL)) {
|
|||
|
// Если очищение вернуло результат
|
|||
|
|
|||
|
// Проверка
|
|||
|
if ($sanitized !== $target || !preg_match("/[0-9A-z]+@[A-z]+\.[A-z]+/", $sanitized)) {
|
|||
|
// Если очищенное значение не совпадает с отправленным
|
|||
|
// или если не совпадает с паттерном "email"
|
|||
|
new Error(200, __FUNCTION__);
|
|||
|
}
|
|||
|
|
|||
|
return (string) $sanitized;
|
|||
|
} else {
|
|||
|
new Error(200, __FUNCTION__);
|
|||
|
}
|
|||
|
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|