|
|
|
|
|
|
| |
| <?
/*
* @package User defining typification in PHP
* @author $Author: sheiko $
* @version $Id: typification.php,v 1.0 2005/09/29 15:58:15 sheiko Exp $
* @since v.1.0
* @copyright (c) Dmitry Sheiko http://www.cmsdevelopment.com
*/
class FuncParams {
var $patternCounter;
var $Fault;
var $ErrorMessage;
/**
* Class constructor
* @param string $Commands - a string with validation patterns
* @param string $ParamValuesArray parameters values array
* @return object
*/
function FuncParams($Commands, $ParamValuesArray) {
$this->patternCounter = 0;
$this->Fault = False;
$this->ErrorMessage = '';
$this->Validate($Commands, $ParamValuesArray);
return $this;
}
/**
* Set error triggers
* @param string $ErrorMessage error message
* @return mixed
*/
function trigger_error($ErrorMessage) {
$this->Fault = True;
$this->ErrorMessage = $ErrorMessage;
}
/**
* String type validation
* @param string $a_pattern pattern for validation
* @param string $a_value value for validation
* @return mixed
*/
function is_string( $a_pattern, $a_value ) {
$range = array();
if( !is_string($a_value)) $this->trigger_error("Parameter No.".$this->patternCounter." must be a String");
if( preg_match("/^.*\{.*\}/is", trim($a_pattern)) ) {
list($range["left"], $range["right"]) = split(",", preg_replace("/^.*\{(.*)\}$/is", "\\1", $a_pattern));
if(strlen($a_value)<$range["left"] OR strlen($a_value)>$range["right"]) $this->trigger_error("Value of parameter No.".$this->patternCounter." exceeds legal range ".$a_pattern);
}
if( preg_match("/^.*\[.*\]/is", trim($a_pattern)) ) {
$range = split("\|", preg_replace("/^.*\[(.*)\]$/is", "\\1", $a_pattern));
if( !in_array($a_value,$range) ) $this->trigger_error("Value of parameter No.".$this->patternCounter." exceeds legal range ".$a_pattern);
}
}
/**
* Integer type validation
* @param string $a_pattern pattern for validation
* @param string $a_value value for validation
* @return mixed
*/
function is_integer( $a_pattern, $a_value) {
$range = array();
if( !is_integer($a_value)) $this->trigger_error("Parameter No.".$this->patternCounter." must be an Integer");
if( preg_match("/^int.*?\{.*\}/is", trim($a_pattern)) ) {
list($range["left"], $range["right"]) = split(",", preg_replace("/^int.*?\{(.*)\}$/is", "\\1", $a_pattern));
if($a_value<$range["left"] OR $a_value>$range["right"]) $this->trigger_error ("Value of parameter No.".$this->patternCounter." exceeds legal range ".$a_pattern);
}
if( preg_match("/^.*\[.*\]/is", trim($a_pattern)) ) {
$range = split("\|", preg_replace("/^.*\[(.*)\]$/is", "\\1", $a_pattern));
if( !in_array($a_value,$range) ) $this->trigger_error("Value of parameter No.".$this->patternCounter." exceeds legal range ".$a_pattern);
}
}
/**
* Array type validation
* @param string $a_pattern pattern for validation
* @param string $a_value value for validation
* @return mixed
*/
function is_array( $a_pattern, $a_value ) {
$range = array();
if( !is_array($a_value)) $this->trigger_error ("Parameter No.".$this->patternCounter." must be an Array");
if( preg_match("/^array\{.*\}/is", trim($a_pattern)) ) {
$range = split(",", preg_replace("/^array\{(.*)\}$/is", "\\1", $a_pattern));
if(count($a_value)!=$range[0]) $this->trigger_error("Value of parameter No.".$this->patternCounter." exceeds legal range ".$a_pattern);
}
}
/**
* ArrayOfStrings type validation
* @param string $a_pattern pattern for validation
* @param string $a_value value for validation
* @return mixed
*/
function is_ArrayOfStrings( $a_pattern, $a_value) {
$range = array();
if( !is_array($a_value)) $this->trigger_error("Parameter No.".$this->patternCounter." must be an array of strings");
if($a_value) {
foreach($a_value as $val) {
if(gettype($val)!="string") $this->trigger_error("Parameter No.".$this->patternCounter." contains an illegal value (not string)");
}
}
if( preg_match("/^ArrayOfStrings\{.*\}/is", trim($a_pattern)) ) {
$range = split(",", preg_replace("/^ArrayOfStrings\{(.*)\}$/is", "\\1", $a_pattern));
if(count($a_value)!=$range[0]) $this->trigger_error("Value of parameter No.".$this->patternCounter." exceeds legal range ".$a_pattern);
}
}
/**
* Validator
* @param string $Commands - a string with validation patterns
* @param string $ParamValuesArray parameters values array
* @return mixed
*/
function Validate($Commands, $ParamValuesArray) {
$patternsArr = array();
$a_pattern = "";
$a_value = 0;
$key = "";
if( !is_string($Commands) OR !$Commands) trigger_error ("Incorrect FuncParams parameter", E_USER_ERROR);
if( !is_array($ParamValuesArray) ) trigger_error ("Incorrect ParamValuesArray parameter", E_USER_ERROR);
$patternsArr = split(";", trim($Commands));
if($patternsArr) {
foreach($patternsArr as $a_pattern) {
$a_value = $ParamValuesArray[(++$this->patternCounter-1)];
if(!$a_pattern) break;
if( preg_match("/^\*/is", trim($a_pattern)) ) break;
if( preg_match("/^ArrayOfStrings/is", trim($a_pattern)) ) $this->is_ArrayOfStrings(trim($a_pattern), $a_value);
if( preg_match("/^string/is", trim($a_pattern)) ) $this->is_string(trim($a_pattern), $a_value);
if( preg_match("/^int/is", trim($a_pattern)) ) $this->is_integer(trim($a_pattern), $a_value);
if( preg_match("/^array/is", trim($a_pattern)) ) $this->is_array(trim($a_pattern), $a_value);
if($this->Fault) return False;
}
}
return True;
}
}
// Example:
// Options of types specifing are similar Regular Expressions:
// type_of_value{left_limit,right_limit}[posible_value1|posible_value2]; ..
class Sample {
function Sample() {
$values = &func_get_args();
$p = new FuncParams("string{0,3}[abc|bbc]; integer; array{2}; ArrayOfStrings", $values);
if($p->Fault) trigger_error ($p->ErrorMessage . ". Function <i>'" . __FUNCTION__ . "'.</i>", E_USER_ERROR);
print "PASS";
}
}
$r = new Sample('abc', 2, array(1,2), array("123","ABC"));
?> | | |
|
| SPL and ITERATOR : examples Categories : PHP, Object Oriented, PHP Classes, Sessions | | | Advanced Image WaterMarker Categories : PHP, PHP Classes, GD image library, Graphics, Object Oriented | | | Access_user Class - an easy to use system for protecting pages and register users. Categories : PHP, Classes and Objects, Object Oriented, PHP Classes, Authentication | | | An updated OOP - Inheritance Categories : PHP, PHP Classes, Object Oriented | | | very simple ftp class Categories : PHP, PHP Classes, FTP | | | PHP Paypal IPN Integration Class v1.0.0 Categories : PHP, PHP Classes, Payment Gateways | | | A Timing Class Categories : PHP, PHP Classes, Date Time | | | The class to check load time of your script
VERY usefull for relatively slow applications, but not only.. Categories : PHP, PHP Classes, Debugging | | | Create HTML forms dynamicly using Javascript & PHP Categories : PHP, PHP Classes, Java Script | | | usercounter class Categories : PHP, PHP Classes, Databases, MySQL, Environment Variables | | | RSS parser.
Parses RSS into an array. Quick and nasty but does the job.
No checking is done for correct Tags, only correct XML.
PHP4 needed to display result (uses print_r). Categories : PHP, XML, PHP Classes, Rich Site Summary (RSS) | | | These PHP Classes Check if a host is alive using various methods. Categories : PHP, PHP Classes, Sockets, CURL | | | an example of the cyberlib payment class Categories : PHP, PHP Classes, Ecommerce, Credit Cards | | | Power Form Validation Categories : PHP, PHP Classes, Data Validation | | | MySQL Handler Categories : PHP, Databases, MySQL, Classes and Objects, PHP Classes | |
|
|
|