| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | 
							- <?php namespace System\Validation;
 
- use System\Str;
 
- abstract class Nullable_Rule extends Rule {
 
- 	/**
 
- 	 * Indicates an empty value should be considered valid.
 
- 	 *
 
- 	 * @var bool
 
- 	 */
 
- 	public $allow_empty = false;
 
- 	/**
 
- 	 * Indicates null should be considered valid.
 
- 	 *
 
- 	 * @var bool
 
- 	 */
 
- 	public $allow_null = false;
 
- 	/**
 
- 	 * Evaluate the validity of an attribute.
 
- 	 *
 
- 	 * If this method returns a value, the child class will return it
 
- 	 * as the result of the validation. Otherwise, the child class will
 
- 	 * continue validating as normal.
 
- 	 *
 
- 	 * @param  string  $attribute
 
- 	 * @param  array   $attributes
 
- 	 * @return mixed
 
- 	 */
 
- 	public function check($attribute, $attributes)
 
- 	{
 
- 		// -------------------------------------------------------------
 
- 		// If the attribute doesn't exist, the child's validation
 
- 		// check will be be halted, and a presence_of error will be
 
- 		// raised if null is not allowed.
 
- 		// -------------------------------------------------------------
 
- 		if ( ! array_key_exists($attribute, $attributes))
 
- 		{
 
- 			if ( ! $this->allow_null)
 
- 			{
 
- 				$this->error = 'presence_of';
 
- 			}
 
- 			return is_null($this->error);
 
- 		}
 
- 		// -------------------------------------------------------------
 
- 		// Make sure the attribute is not an empty string. An error
 
- 		// will be raised if the attribute is empty and empty strings
 
- 		// are not allowed, halting the child's validation.
 
- 		// -------------------------------------------------------------
 
- 		elseif (Str::length((string) $attributes[$attribute]) == 0 and ! $this->allow_empty)
 
- 		{
 
- 			$this->error = 'presence_of';
 
- 			return false;
 
- 		}
 
- 	}
 
- 	/**
 
- 	 * Allow a empty and null to be considered valid.
 
- 	 *
 
- 	 * @return Nullable_Rule
 
- 	 */
 
- 	public function not_required()
 
- 	{
 
- 		return $this->allow_empty()->allow_null();
 
- 	}
 
- 	/**
 
- 	 * Allow empty to be considered valid.
 
- 	 *
 
- 	 * @return Nullable_Rule
 
- 	 */
 
- 	public function allow_empty()
 
- 	{
 
- 		$this->allow_empty = true;
 
- 		return $this;
 
- 	}
 
- 	/**
 
- 	 * Allow null to be considered valid.
 
- 	 *
 
- 	 * @return Nullable_Rule
 
- 	 */
 
- 	public function allow_null()
 
- 	{
 
- 		$this->allow_null = true;
 
- 		return $this;
 
- 	}
 
- }
 
 
  |