Simple PHP Validator that allows chain validate conditions in one static method
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

PHP Static Validator

Class primarily created to find some useful purpose for __callStatic function new in PHP 5.3.0. With PHP StaticValidator You can chain multiple conditions and checked value is being tested one by one.

Travis build status: Build Status


Since Validator uses namespaces, it is required to use class autoloader, for example SplClassLoader.php more info here. You have to register Validator classes:

$classLoader = new SplClassLoader('Spiechu\StaticValidator' , 'library');

No external libraries required.


Static Validator's class is designed to check if given variable or array of variables meet certain conditions.

Basically every check method starts with check word, and then You can use separator _ and type next condition which tested variable is supposed to meet.

For exaple Validator::check_notNull_isInt_gt5($testedVariable); we can translate to !is_null($testedVariable) && is_int($testedVariable) && ($testedVariable > 5) You can see we gain some concise and some flexibility (gt5).

We can distinguish three main components in PHP Static Validator:

  1. simple wrappers (for eg. isSet, notSet, isNull, notNull, isInt, notInt, isString, notString)
  2. regular expressions based (for eg. onlyLetters, onlyNumbers)
  3. magic functions (for eg. eq3, gt3, lt3, minLength5)

Highly recommended way of constructing magic method name is from broadest test condition to narrowest. For eg. notNull is broader condition than isInt, which is broader than gt5.

Complete list of functions

  1. Wrappers:
    • [is|not]Set
    • [is|not]Null
    • [is|not]Empty
    • [is|not]Int
    • [is|not]String
  2. Regular expressions:
    • onlyLetters
    • onlyNumbers
    • onlyAlnums
  3. Magic functions:
    • lt# - less than number
    • gt# - greater than number
    • eq# - equals to number
    • between#and# - matches range number
    • min# - minimum string length
    • max# - maximum string length

Known Issues

When variable is not set, the only way to avoid E_NOTICE is to pass variable to check by reference instead of pass by value. Passing by reference cannot be performed in __callStatic's $arg table so You have to either suppress E_NOTICE warnings or avoid using isSet or notSet.