/** * Returns an array of DB Object Subclasses. * @param array $colValPairs * @return array */ public static function find($class, $colValPairs) { if (is_subclass_of($class, __CLASS__)) { $validPairs = array(); foreach ($colValPairs as $col => $val) { if (isset($class::$_sanitizeFunctions[$col])) { $val = call_user_func($class::$_sanitizeFunctions[$col], $val); if ($class::$_validateFunctions[$col] === true || call_user_func($class::$_validateFunctions[$col], $val)) { $validPairs[$col] = $val; } } } if (!empty($validPairs)) { $wherePairs = DB::getColValPairs($validPairs, ' AND '); $sql = "SELECT " . DB::toColumnList($class::$uniqueKeys) . " FROM `" . $class::TABLE . "` WHERE {$wherePairs}"; return array_map(function ($row) use($class) { return DB_Object::getSubclassInstance($row, $class); }, DB::query($sql)->fetchAllAssoc()); } } return array(); }