}, true); DataModel::RegisterType("Int", function ($d) { return (int) $d; }, function ($d, $c) { $d = $c($d); return is_numeric($d); }); DataModel::RegisterType("UnsignedInt", function ($d) { return (int) $d; }, function ($d, $c) { $d = $c($d); return is_numeric($d) && $d >= 0; }); DataModel::RegisterTypeAs("ForeignKey", "UnsignedInt"); DataModel::RegisterTypeAs("Timestamp", "UnsignedInt"); DataModel::RegisterTypeAs("Rank", "UnsignedInt"); DataModel::RegisterType("Float", function ($d) { return (double) $d; }, function ($d, $c) { $d = $c($d); return is_float($d); }); DataModel::RegisterType("UnsignedFloat", function ($d) { return (double) $d; }, function ($d, $c) { return is_numeric($d) && is_float($c($d)) && $c($d) >= 0; }); DataModel::RegisterType("String", function ($d) { return (string) $d; }, function ($d, $c) { $d = $c($d);