/**
* Validate the guessed extension of a file upload is in a set of file extensions.
*
* @param string $attribute
* @param mixed $value
* @param array $parameters
* @return bool
*/
protected function validateMimes($attribute, $value, $parameters)
{
if (! $this->isAValidFileInstance($value)) {
return false;
}// first this must be a file.
return $value->getPath() != '' && in_array($value->guessExtension(), $parameters);
// get path()
}// this extension about file be guessed
/**
* Validate the MIME type of a file upload attribute is in a set of MIME types.
*
* @param string $attribute
* @param mixed $value
* @param array $parameters
* @return bool
*/
protected function validateMimetypes($attribute, $value, $parameters)
{
if (! $this->isAValidFileInstance($value)) {
return false;
}
return $value->getPath() != '' && in_array($value->getMimeType(), $parameters);
}//validate the MIME type of a file upload attribute is in a set of MIME types
/**
* Check that the given value is a valid file instance.
*
* @param mixed $value
* @return bool
*/
public function isAValidFileInstance($value)
{
if ($value instanceof UploadedFile && ! $value->isValid()) {
return false;
}// this value is a instanceof this Uploaded File
return $value instanceof File;
}//check that the given value is a valid file instance.
/**
* Validate that an attribute contains only alphabetic characters.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
protected function validateAlpha($attribute, $value)
{
return is_string($value) && preg_match('/^[\pL\pM]+$/u', $value);
}//get this value just abcd means it is alphabetic
// just return this value,use preg_match
/**
* Validate that an attribute contains only alpha-numeric characters.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
protected function validateAlphaNum($attribute, $value)
{
if (! is_string($value) && ! is_numeric($value)) {
return false;
}// this is_string
return preg_match('/^[\pL\pM\pN]+$/u', $value);//change this preg match
}// this must be alpha and numeric characters.
/**
* Validate that an attribute contains only alpha-numeric characters, dashes, and underscores.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
protected function validateAlphaDash($attribute, $value)
{
if (! is_string($value) && ! is_numeric($value)) {
return false;
}
return preg_match('/^[\pL\pM\pN_-]+$/u', $value);
}// a validate way, alpha number dash and underscores
/**
* Validate that an attribute passes a regular expression check.
*
* @param string $attribute
* @param mixed $value
* @param array $parameters
* @return bool
*/
protected function validateRegex($attribute, $value, $parameters)
{
if (! is_string($value) && ! is_numeric($value)) {
return false;
}
$this->requireParameterCount(1, $parameters, 'regex');
return preg_match($parameters[0], $value);
}// a user rule , this rule is a regex
/**
* Validate that an attribute is a valid date.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
protected function validateDate($attribute, $value)
{//Validate that an attribute is a valid date.
if ($value instanceof DateTime) {
return true;
}// a instanceof DateTime
if (strtotime($value) === false) {
return false;
}// a false
$date = date_parse($value);// get date
return checkdate($date['month'], $date['day'], $date['year']);
}// check date
/**
* Validate that an attribute matches a date format.
*
* @param string $attribute
* @param mixed $value
* @param array $parameters
* @return bool
*/
protected function validateDateFormat($attribute, $value, $parameters)
{
$this->requireParameterCount(1, $parameters, 'date_format');//get count
$parsed = date_parse_from_format($parameters[0], $value);//date_parse_from_format
return $parsed['error_count'] === 0 && $parsed['warning_count'] === 0;//error_count
}// validate that an attribute matches a date format
/**
* Validate the date is before a given date.
*
* @param string $attribute
* @param mixed $value
* @param array $parameters
* @return bool
*/
protected function validateBefore($attribute, $value, $parameters)
{
$this->requireParameterCount(1, $parameters, 'before');
if ($format = $this->getDateFormat($attribute)) {
return $this->validateBeforeWithFormat($format, $value, $parameters);
}
if (! ($date = strtotime($parameters[0]))) {
return strtotime($value) < strtotime($this->getValue($parameters[0]));
}//str to time
return strtotime($value) < $date;
}//validate before
/**
* Validate the date is before a given date with a given format.
*
* @param string $format
* @param mixed $value
* @param array $parameters
* @return bool
*/
protected function validateBeforeWithFormat($format, $value, $parameters)
{
$param = $this->getValue($parameters[0]) ?: $parameters[0];
return $this->checkDateTimeOrder($format, $value, $param);
}//validate before with format
/**
* Validate the date is after a given date.
*
* @param string $attribute
* @param mixed $value
* @param array $parameters
* @return bool
*/
protected function validateAfter($attribute, $value, $parameters)
{
$this->requireParameterCount(1, $parameters, 'after');
if ($format = $this->getDateFormat($attribute)) {
return $this->validateAfterWithFormat($format, $value, $parameters);
}
if (! ($date = strtotime($parameters[0]))) {
return strtotime($value) > strtotime($this->getValue($parameters[0]));
}
return strtotime($value) > $date;
}// validate after ,just a monitor model
/**
* Validate the date is after a given date with a given format.
*
* @param string $format
* @param mixed $value
* @param array $parameters
* @return bool
*/
protected function validateAfterWithFormat($format, $value, $parameters)
{
$param = $this->getValue($parameters[0]) ?: $parameters[0];// get the param
return $this->checkDateTimeOrder($format, $param, $value);// get the check result
}// validate the date is after a given date with a given format