MaplePHP - Validation is a lightweight and powerful PHP library designed to simplify the validation of various data inputs. Whether you're verifying if a value is a valid email or phone number, ensuring string lengths, or performing more advanced checks like credit card numbers and dates, MaplePHP - Validation offers a comprehensive and intuitive approach. With its wide range of built-in validators and simple syntax, it makes handling complex validation tasks easier, leading to cleaner and more reliable code.
Install the library via Composer:
composer require maplephp/validateYou can validate values by instantiating the Validator class. There are two ways to do this:
use MaplePHP\Validate\Validator;
// Option 1: Create an instance
$inp = new Validator("Lorem ipsum dolor");
var_dump($inp->length(1, 200)); // true
// Option 2: Use the static method for cleaner syntax
$valid = Validator::value("Lorem ipsum dolor")->length(1, 200);
var_dump($valid); // trueYou can traverse nested arrays or objects and validate specific values using dot notation:
$inp = new Validator([
"user" => [
"name" => "John Doe",
"email" => "john.doe@gmail.com",
]
]);
$valid = $inp->eq("user.name")->length(1, 200);
var_dump($valid); // trueđź’ˇ You can also use
validateInData()for more dynamic validations:
$valid = $inp->validateInData("user.name", "length", [1, 200]);The ValidationChain class allows you to chain multiple validations on a single value and check the overall result:
use MaplePHP\Validate\ValidationChain;
$validPool = new ValidationChain("john.doe@gmail.com");
$validPool->isEmail()
->length(1, 200)
->endsWith(".com");
$isValid = $validPool->isValid();
// $hasError = $validPool->hasError();
var_dump($isValid); // trueđź§
ValidationChainis useful when you want to collect and evaluate multiple validation rules at once.
Validator::value("Lorem ipsum dolor")->isRequired();Validator::value(0)->hasValue();- Min only:
Validator::value("Lorem ipsum dolor")->length(1);- Min and Max:
Validator::value("Lorem ipsum dolor")->length(1, 160);Validator::value("Lorem ipsum dolor")->isLengthEqualTo(10);- Equals: Strict data type validation check if equals to expected value
Validator::value("Lorem ipsum dolor")->isEqualTo("Lorem ipsum dolor");- Loosely Equals: Flexible data type validation check if loosely equals to expected value
Validator::value("Lorem ipsum dolor")->isLooselyEqualTo("Lorem ipsum dolor");- Not equals: Strict data type validation check if not equals to expected value
Validator::value("Lorem ipsum dolor")->isNotEqualTo("Lorem ipsum");- Loosely Not equals: Flexible data type validation check if loosely not equals to expected value
Validator::value("Lorem ipsum dolor")->isLooselyNotEqualTo("Lorem ipsum");- More than:
Validator::value(200)->isMoreThan(100);- Less than:
Validator::value(100)->isLessThan(200);- Contains:
Validator::value("Lorem ipsum dolor")->contains("ipsum");- Starts with:
Validator::value("Lorem ipsum dolor")->startsWith("Lorem");- Ends with:
Validator::value("Lorem ipsum dolor")->endsWith("dolor");Validator::value("john@gmail.com")->isEmail();Allows numbers and special characters ("-", "+", " ").
Validator::value("+46709676040")->isPhone();Validator::value("198808213412")->isSocialNumber();Validator::value("197511043412")->isOrgNumber();Validator::value("1616523623422334")->isCreditCard();Validator::value("SE8272267913")->isVatNumber();Validator::value(3.1415)->isFloat();Validator::value(42)->isInt();Validator::value(42)->isNumber();- Positive:
Validator::value(20)->isPositive();- Negative:
Validator::value(-20)->isNegative();// True === validate as a semantic Versioning, e.g. 1.0.0
Validator::value("1.0.0")->isValidVersion(true);Validator::value("1.0.0")->versionCompare("2.0.0", '>=');- Lossy password (minimum character set):
Validator::value("password123")->isLossyPassword(8);- Strict password (requires at least one lowercase, uppercase, digit, and special character):
Validator::value("Password#123!")->isStrictPassword(8);- Both cases:
Validator::value("HelloWorld")->atoZ();- Lowercase only:
Validator::value("helloworld")->lowerAtoZ();- Uppercase only:
Validator::value("HELLOWORLD")->upperAtoZ();Validator::value("#000000")->hex();As default you can validate against a date format like this "Y-m-d"
Validator::value("2022-02-13")->isDate();Custom date validation
Validator::value("2022/02/13 14:15")->isDate(Y/m/d H:i);Validator::value("2022-02-13 14:15:58")->isDateWithTime();Validate hour and minutes
Validator::value("14:15")->isTime();Validate hour, minutes and seconds
Validator::value("14:15:58")->isTime(true);Validator::value("1988-05-22")->isAge(18);Validator::value("example.com")->isDomain();Validator::value("https://example.com/page")->isUrl();Validator::value("example.com")->isDns();- Check if it's a valid file:
Validator::value("/path/to/file.txt")->isFile();- Check if it's a directory:
Validator::value("/path/to/directory")->isDir();- Check if it's writable:
Validator::value("/path/to/file.txt")->isWritable();- Check if it's readable:
Validator::value("/path/to/file.txt")->isReadable();Validator::value("12345")->isZip(5);Validator::value("abc")->pregMatch("a-zA-Z");Validator::value(["Apple", "Orange", "Lemon"])->isArray();Validator::value(["Apple", "Orange", "Lemon"])->isArrayEmpty();Validator::value(["Apple", "Orange", "Lemon"])->isInArray();Validator::value(["Apple", "Orange", "Lemon"])->isLooselyInArray();Validator::value(["Apple", "Orange", "Lemon"])->keyExists();Validator::value(["1", true, "Lemon"])->itemsAreTruthy();Validator::value(["1", false, "Lemon"])->hasTruthyItem();Validator::value(["Apple", "Orange", "Lemon"])->isCountEqualTo(3);Validator::value(["Apple", "Orange", "Lemon"])->isCountMoreThan(1);Validator::value(["Apple", "Orange", "Lemon"])->isCountLessThan(4);Validator::value("Lorem ipsum dolor")->isString();Validator::value("Lorem ipsum dolor")->isString();Validator::value(3.1415)->isFloat();Validator::value(42)->isInt();- Is Boolean:
Validator::value(true)->isBool();- Is Boolean-like value (e.g., "yes", "no", "1", "0"):
Validator::value("yes")->isBoolVal();- Array:
Validator::value([1, 2, 3])->isArray();- Object:
Validator::value($obj)->isObject();- Resource:
Validator::value($resource)->isResource();- Json:
Validator::value($jsonStr)->isJson();- HTML Document:
Validator::value($jsonStr)->isFullHtml();Validator::value(403)->isHttpStatusCode();Validator::value(200)->isHttp200();Validator::value(210)->isHttpSuccess();Validator::value(403)->isHttpClientError();Validator::value(500)->isHttpServerError();- Validate if one method passes:
Validator::value("12345")->oneOf(['isInt' => []]);- Validate if all methods pass:
Validator::value("12345")->allOf(['isInt' => [], 'length' => [5]]);