ILIAS  Release_4_2_x_branch Revision 61807
 All Data Structures Namespaces Files Functions Variables Groups Pages
HTMLPurifier_VarParser Class Reference

Parses string representations into their corresponding native PHP variable type. More...

+ Inheritance diagram for HTMLPurifier_VarParser:
+ Collaboration diagram for HTMLPurifier_VarParser:

Public Member Functions

 parse ($var, $type, $allow_null=false)
 Validate a variable according to type.

Static Public Member Functions

static getTypeName ($type)

Data Fields

const STRING = 1
const ISTRING = 2
const TEXT = 3
const ITEXT = 4
const INT = 5
const FLOAT = 6
const BOOL = 7
const LOOKUP = 8
const ALIST = 9
const HASH = 10
const MIXED = 11

Static Public Attributes

static $types
 Lookup table of allowed types.
static $stringTypes
 Lookup table of types that are string, and can have aliases or allowed value lists.

Protected Member Functions

 parseImplementation ($var, $type, $allow_null)
 Actually implements the parsing.
 error ($msg)
 Throws an exception.
 errorInconsistent ($class, $type)
 Throws an inconsistency exception.
 errorGeneric ($var, $type)
 Generic error for if a type didn't work.

Detailed Description

Parses string representations into their corresponding native PHP variable type.

The base implementation does a simple type-check.

Definition at line 7 of file VarParser.php.

Member Function Documentation

HTMLPurifier_VarParser::error (   $msg)
protected

Throws an exception.

Definition at line 120 of file VarParser.php.

Referenced by errorGeneric(), and parse().

{
}

+ Here is the caller graph for this function:

HTMLPurifier_VarParser::errorGeneric (   $var,
  $type 
)
protected

Generic error for if a type didn't work.

Definition at line 137 of file VarParser.php.

References error(), and getTypeName().

Referenced by parse(), and HTMLPurifier_VarParser_Flexible\parseImplementation().

{
$vtype = gettype($var);
$this->error("Expected type ".HTMLPurifier_VarParser::getTypeName($type).", got $vtype");
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HTMLPurifier_VarParser::errorInconsistent (   $class,
  $type 
)
protected

Throws an inconsistency exception.

Note
This should not ever be called. It would be called if we extend the allowed values of HTMLPurifier_VarParser without updating subclasses.

Definition at line 130 of file VarParser.php.

References getTypeName().

Referenced by parse(), and HTMLPurifier_VarParser_Flexible\parseImplementation().

{
throw new HTMLPurifier_Exception("Inconsistency in $class: ".HTMLPurifier_VarParser::getTypeName($type)." not implemented");
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static HTMLPurifier_VarParser::getTypeName (   $type)
static

Definition at line 142 of file VarParser.php.

References $types.

Referenced by errorGeneric(), errorInconsistent(), and HTMLPurifier_Config\set().

{
static $lookup;
if (!$lookup) {
// Lazy load the alternative lookup table
$lookup = array_flip(HTMLPurifier_VarParser::$types);
}
if (!isset($lookup[$type])) return 'unknown';
return $lookup[$type];
}

+ Here is the caller graph for this function:

HTMLPurifier_VarParser::parse (   $var,
  $type,
  $allow_null = false 
)
final

Validate a variable according to type.

Throws HTMLPurifier_VarParserException if invalid. It may return NULL as a valid type if $allow_null is true.

Parameters
$varVariable to validate
$typeType of variable, see HTMLPurifier_VarParser->types
$allow_nullWhether or not to permit null as a value
Returns
Validated and type-coerced variable

Definition at line 61 of file VarParser.php.

References $types, error(), errorGeneric(), errorInconsistent(), and parseImplementation().

{
if (is_string($type)) {
if (!isset(HTMLPurifier_VarParser::$types[$type])) {
throw new HTMLPurifier_VarParserException("Invalid type '$type'");
} else {
}
}
$var = $this->parseImplementation($var, $type, $allow_null);
if ($allow_null && $var === null) return null;
// These are basic checks, to make sure nothing horribly wrong
// happened in our implementations.
switch ($type) {
case (self::STRING):
case (self::ISTRING):
case (self::TEXT):
case (self::ITEXT):
if (!is_string($var)) break;
if ($type == self::ISTRING || $type == self::ITEXT) $var = strtolower($var);
return $var;
case (self::INT):
if (!is_int($var)) break;
return $var;
case (self::FLOAT):
if (!is_float($var)) break;
return $var;
case (self::BOOL):
if (!is_bool($var)) break;
return $var;
case (self::LOOKUP):
case (self::ALIST):
case (self::HASH):
if (!is_array($var)) break;
if ($type === self::LOOKUP) {
foreach ($var as $k) if ($k !== true) $this->error('Lookup table contains value other than true');
} elseif ($type === self::ALIST) {
$keys = array_keys($var);
if (array_keys($keys) !== $keys) $this->error('Indices for list are not uniform');
}
return $var;
case (self::MIXED):
return $var;
default:
$this->errorInconsistent(get_class($this), $type);
}
$this->errorGeneric($var, $type);
}

+ Here is the call graph for this function:

HTMLPurifier_VarParser::parseImplementation (   $var,
  $type,
  $allow_null 
)
protected

Actually implements the parsing.

Base implementation is to not do anything to $var. Subclasses should overload this!

Reimplemented in HTMLPurifier_VarParser_Flexible, and HTMLPurifier_VarParser_Native.

Definition at line 113 of file VarParser.php.

Referenced by parse().

{
return $var;
}

+ Here is the caller graph for this function:

Field Documentation

HTMLPurifier_VarParser::$stringTypes
static
Initial value:
array(
self::STRING => true,
self::ISTRING => true,
self::TEXT => true,
self::ITEXT => true,
)

Lookup table of types that are string, and can have aliases or allowed value lists.

Definition at line 44 of file VarParser.php.

Referenced by HTMLPurifier_ConfigSchema_Validator\validateDirective().

HTMLPurifier_VarParser::$types
static
Initial value:
array(
'string' => self::STRING,
'istring' => self::ISTRING,
'text' => self::TEXT,
'itext' => self::ITEXT,
'int' => self::INT,
'float' => self::FLOAT,
'bool' => self::BOOL,
'lookup' => self::LOOKUP,
'list' => self::ALIST,
'hash' => self::HASH,
'mixed' => self::MIXED
)

Lookup table of allowed types.

Mainly for backwards compatibility, but also convenient for transforming string type names to the integer constants.

Definition at line 26 of file VarParser.php.

Referenced by HTMLPurifier_ConfigSchema\add(), getTypeName(), parse(), and HTMLPurifier_ConfigSchema_Validator\validateDirective().

const HTMLPurifier_VarParser::ALIST = 9

Definition at line 18 of file VarParser.php.

Referenced by HTMLPurifier_Printer_ConfigForm_default\render().

const HTMLPurifier_VarParser::BOOL = 7

Definition at line 16 of file VarParser.php.

Referenced by HTMLPurifier_Printer_ConfigForm\__construct().

const HTMLPurifier_VarParser::FLOAT = 6

Definition at line 15 of file VarParser.php.

const HTMLPurifier_VarParser::HASH = 10

Definition at line 19 of file VarParser.php.

Referenced by HTMLPurifier_Printer_ConfigForm_default\render().

const HTMLPurifier_VarParser::INT = 5

Definition at line 14 of file VarParser.php.

const HTMLPurifier_VarParser::ISTRING = 2

Definition at line 11 of file VarParser.php.

const HTMLPurifier_VarParser::ITEXT = 4

Definition at line 13 of file VarParser.php.

Referenced by HTMLPurifier_Printer_ConfigForm_default\render().

const HTMLPurifier_VarParser::LOOKUP = 8

Definition at line 17 of file VarParser.php.

Referenced by HTMLPurifier_Printer_ConfigForm_default\render().

const HTMLPurifier_VarParser::MIXED = 11

Definition at line 20 of file VarParser.php.

Referenced by HTMLPurifier_Printer_ConfigForm_default\render().

const HTMLPurifier_VarParser::STRING = 1

Definition at line 10 of file VarParser.php.

const HTMLPurifier_VarParser::TEXT = 3

Definition at line 12 of file VarParser.php.

Referenced by HTMLPurifier_Printer_ConfigForm_default\render().


The documentation for this class was generated from the following file: