<?php
function validateFormat($data){
//Check that all the required fields exist
$missing = array_diff_key(self::$dataFormat, $data);
$extra = array_diff_key($data, self::$dataFormat);
if(!empty($missing) || !empty($extra)){
throw new InvalidArgumentException("Incorrect data format provided");
}
//Check that all the data is of the correct type
foreach($data as $k => $v){
$type = gettype($v) === "object" ? get_class($v) : gettype($v);
$correctType = self::$dataFormat[$k];
if($type !== $correctType){
throw new InvalidArgumentException("Data is of an incorrect type.");
}
}
}
$arr = array("dateTimeOfData" => new DateTime(),
"open" => 10.1,
"high" => 10.1,
"low" => 10.1,
"close" => 10.1,
"volume" => 10,
"isCritical" => true);
validateFormat($arr);