Zakaria Arrid

Under-the-hood PHP tips


1. Using the Spread Operator with the Ternary Operator in PHP Arrays

    $arr = [
        ["1"],
        ... true ? ["2", 3] : []
    ];

    // ["1", "2", 3]

2. Enum-Based Strategy Pattern in PHP

enum EmailValidation
{
    case NoRfcWarnings;
    case DnsCheck;
    case SpoofCheck;
    case Filter;
    case Rfc;

    public function validation()
    {
        return match ($this) {
            self::NoRfc => new NoRFCWarningsValidation(),
            self::Dns => new DNSCheckValidation(),
            self::SpoofCheck => new SpoofCheckValidation(),
            self::Filter => new FilterEmailValidation(),
            default => new RFCValidation(),
        }
    }
}


public static function isEmail(string $value, ?EmailValidation $rule = null): bool
{
    $validator = new EmailValidator();
    return $validator->isValid($value, $rule?->validation() ?? new RFCValidation());
}

I will add under-the-hood functions gradually, day by day. .... by