protected function determineSourceTypes($source)
{
if (is_string($source)) {
return ['string'];
} elseif (is_array($source)) {
return ['array'];
} elseif (is_float($source)) {
return ['float'];
} elseif (is_integer($source)) {
return ['integer'];
} elseif (is_bool($source)) {
return ['boolean'];
} elseif (is_object($source)) {
$class = get_class($source);
$parentClasses = class_parents($class);
$interfaces = class_implements($class);
return array_merge([$class], $parentClasses, $interfaces, ['object']);
} else {
throw new Exception\InvalidSourceException('The source is not of type string, array, float, integer, boolean or object, but of type "' . gettype($source) . '"', 1297773150);
}
}