46 define(
'TYPE_DESCRIPTION_CARDINALITY_SCALAR',
'-1');
47 define(
'TYPE_DESCRIPTION_CARDINALITY_UNKNOWN',
'0');
74 $this->_typeName = $typeName;
77 fatalError(
'Trying to instantiate a "'.$this->
getNamespace().
'" type description with an invalid type name "'.$typeName.
'".');
122 if (is_null($object))
return false;
125 if ($this->_cardinality == TYPE_DESCRIPTION_CARDINALITY_SCALAR) {
127 if (!is_scalar($object) && !is_object($object))
return false;
130 if (!$this->
checkType($object))
return false;
133 if (!is_array($object))
return false;
135 if ($this->_cardinality != TYPE_DESCRIPTION_CARDINALITY_UNKNOWN) {
137 if (count($object) != $this->_cardinality)
return false;
141 foreach($object as $scalar) {
143 if (!is_scalar($scalar) && !is_object($scalar))
return false;
146 if (!$this->
checkType($scalar))
return false;
193 $typeNameParts = explode(
'[', $typeName);
194 switch(count($typeNameParts)) {
197 $this->_cardinality = TYPE_DESCRIPTION_CARDINALITY_SCALAR;
202 $typeName = $typeNameParts[0];
203 $cardinality = trim($typeNameParts[1],
']');
204 if($cardinality ===
'') {
206 $this->_cardinality = TYPE_DESCRIPTION_CARDINALITY_UNKNOWN;
207 } elseif (is_numeric($cardinality)) {
209 $cardinality = (int)$cardinality;
210 assert($cardinality > 0);
211 $this->_cardinality = $cardinality;