mirkorap/php-validator

一个用于验证表单字段的 PHP 库。

安装: 26

依赖者: 0

建议者: 0

安全: 0

星标: 6

关注者: 1

分支: 0

开放问题: 0

类型:package

dev-master 2018-07-06 10:20 UTC

This package is auto-updated.

Last update: 2024-09-29 04:25:31 UTC


README

此包提供了验证值的工具。

安装

composer require mirkorap/php-validator

约束

所有值都使用约束进行验证。以下是一些你可以使用的约束示例

BlankConstraint

验证值是否为空。

NotBlankConstraint

验证值不为空。

NullConstraint

验证值是否为空。

NotNullConstraint

验证值不为空。

IsTrueConstraint

验证值是否为真。

IsFalseConstraint

验证值是否为假。

TypeConstraint

验证值是否为特定数据类型。你可以选择以下类型

  1. string
  2. int
  3. float
  4. bool
  5. array
  6. object

EmailConstraint

验证值是否为有效的电子邮件地址。

LengthConstraint

验证给定字符串长度在某个最小值和最大值之间。

UrlConstraint

验证给定值是否为有效的 URL。

RegexConstraint

验证给定值是否与正则表达式匹配。

IpConstraint

验证给定值是否为有效的 IP。

RangeConstraint

验证给定数字在某个最小值和最大值之间。

EqualToConstraint

验证给定值等于另一个值。

NotEqualToConstraint

验证给定值不等于另一个值。

IdenticalToConstraint

验证给定值与另一个值相同。

NotIdenticalToConstraint

验证给定值与另一个值不同。

LessThanConstraint

验证给定值小于另一个值。

LessThanOrEqualConstraint

验证给定值小于或等于另一个值。

GreaterThanConstraint

验证给定值大于另一个值。

GreaterThanOrEqualConstraint

验证给定值大于或等于另一个值。

DateConstraint

验证给定值是否为有效日期。

DatetimeConstraint

验证给定值是否为有效日期时间。

ChoiceConstraint

此约束用于确保给定值是给定有效选择集合中的一个。要验证值,你应该提供一个数组或闭包。如果你将 multiple 设置为 true,则输入值应期望为数组而不是单个标量值。约束将检查输入数组中的每个值是否可以在有效选择数组中找到。

创建自定义验证表单

所有这些约束都实现了 Constraint 接口。因此,如果你想创建自定义约束,你应该实现它。

要验证表单,你应该创建一个自定义表单类,该类扩展了抽象基类 FormValidator。此类接受一个 FieldValidator 数组以进行验证。因此,每个字段应是一个 FieldValidator 实例,并应包含一组约束。以下是一个基本示例

class ContactFormValidator extends FormValidator
{

    private $companyName = null;
    private $firstName = null;
    private $lastName = null;
    private $email = null;
    private $phone = null;
    private $message = null;

    /**
     * @return FieldValidator|null
     */
    public function getCompanyName()
    {
        return $this->companyName;
    }

    /**
     * @param string $companyName
     */
    public function setCompanyName($companyName)
    {
        $constraints = array(
            new LengthConstraint(255),
        );

        $this->companyName = new FieldValidator('companyName', 'Company Name', $companyName, $constraints);
    }

    /**
     * @return FieldValidator|null
     */
    public function getFirstName()
    {
        return $this->firstName;
    }

    /**
     * @param string $firstName
     */
    public function setFirstName($firstName)
    {
        $constraints = array(
            new NotBlankConstraint(),
            new LengthConstraint(255),
        );

        $this->firstName = new FieldValidator('firstName', 'First name', $firstName, $constraints);
    }

    /**
     * @return FieldValidator|null
     */
    public function getLastName()
    {
        return $this->lastName;
    }

    /**
     * @param string $lastName
     */
    public function setLastName($lastName)
    {
        $constraints = array(
            new NotBlankConstraint(),
            new LengthConstraint(255),
        );

        $this->lastName = new FieldValidator('lastName', 'Last name', $lastName, $constraints);
    }

    /**
     * @return FieldValidator|null
     */
    public function getEmail()
    {
        return $this->email;
    }

    /**
     * @param string $email
     */
    public function setEmail($email)
    {
        $constraints = array(
            new NotBlankConstraint(),
            new LengthConstraint(255),
        );

        $this->email = new FieldValidator('email', 'Email', $email, $constraints);
    }

    /**
     * @return FieldValidator|null
     */
    public function getPhone()
    {
        return $this->phone;
    }

    /**
     * @param string $phone
     */
    public function setPhone($phone)
    {
        $constraints = array(
            new NotBlankConstraint(),
            new LengthConstraint(100),
        );

        $this->phone = new FieldValidator('phone', 'Phone', $phone, $constraints);
    }

    /**
     * @return FieldValidator|null
     */
    public function getMessage()
    {
        return $this->message;
    }

    /**
     * @param string $message
     */
    public function setMessage($message)
    {
        $constraints = array(
            new NotBlankConstraint(),
            new LengthConstraint(500),
        );

        $this->message = new FieldValidator('message', 'Message', $message, $constraints);
    }

    public function buildForm()
    {
        $fields = array(
            $this->getCompanyName(),
            $this->getFirstName(),
            $this->getLastName(),
            $this->getEmail(),
            $this->getPhone(),
            $this->getMessage(),
        );

        $this->setFields($fields);
    }

}