try $_ENV too if a given source is not found in $_SERVER and ultimately fall back to actual value given as the source key - that way you can configure server names in your web server config (which gets written to $_ENV) or provide static values for host, port etc, very useful for HTTPS in combination with load balancers, proxies or NAT setups
add D modifier where it fits to preg_* functions
allow array as 'values' parameter in InarrayValidator