<?php
declare(strict_types=1);

/**
 * 密码强度校验，目前只用在找回密码流程；后台用户管理模块改密码不受此限制
 * 要求：长度大于8，且同时包含大写字母、小写字母、数字、特殊符号
 */
final class PasswordPolicy
{
    public static function isValid(string $password): bool
    {
        return strlen($password) > 8
            && preg_match('/[A-Z]/', $password)
            && preg_match('/[a-z]/', $password)
            && preg_match('/[0-9]/', $password)
            && preg_match('/[^A-Za-z0-9]/', $password);
    }
}
