in templates/php/src/FacebookAds/TypeChecker.php [89:149]
public function checkType($type, $value, $allow_array_for_obj = true) {
if ($value === null || $type === null || $type === "Object") {
return true;
} else if (array_key_exists($type, $this->enum_data)) {
return in_array($value, $this->enum_data[$type]);
} else if ($type === "file") {
return file_exists($value);
} else if ($type === "list" || $type === "map") {
return is_array($value);
} else if ($type === "bool") {
return is_bool($value);
} else if ($type === "int" || $type === "unsigned int" || $type === "float") {
return is_numeric($value);
} else if ($type === "string" || $type === "datetime") {
return is_string($value) || is_numeric($value) || is_bool($value);
} else if ($this->isTypeCollection($type, "list")) {
$sub_types = $this->getTypeFromCollection($type, "list");
$sub_type = $sub_types[0];
if (is_array($value)) {
if (empty($value)) {
return true;
}
$all_object_same_type = true;
foreach ($value as $key => $sub_value) {
$all_object_same_type = ($all_object_same_type &&
$this->checkType($sub_type, $sub_value));
}
return $all_object_same_type;
} else {
return $this->checkType($sub_type, $value);
}
} else if ($this->isTypeCollection($type, "map")) {
if (is_array($value)) {
$sub_types = $this->getTypeFromCollection($type, "map");
if (count($sub_types) === 1) {
$sub_key_type = 'string';
$sub_value_type = $sub_types[0];
} else {
$sub_key_type = $sub_types[0];
$sub_value_type = $sub_types[1];
}
$all_object_same_type = true;
foreach ($value as $key => $sub_value) {
$all_object_same_type = ($all_object_same_type &&
$this->checkType($sub_key_type, $key) &&
$this->checkType($sub_value_type, $sub_value));
}
return $all_object_same_type;
}
} else {
// the type is an object
if ($allow_array_for_obj && is_array($value)) {
return true;
}
if (!$this->startsWith($type, self::ABSTRACT_OBJECT_PREFIX)) {
$type = self::ABSTRACT_OBJECT_PREFIX.$type;
}
return is_a($value, $type);
}
return false;
}