mirkorap / php-validator
一个用于验证表单字段的 PHP 库。
Requires
- php: >=5.4.0
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
验证值是否为特定数据类型。你可以选择以下类型
- string
- int
- float
- bool
- array
- 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);
}
}