/** * Retourne un tableau d'objets de $className depuis la base de données * @param string $className nom de la classe du model à charger * @param string $condition Partie suivant le WHERE d'une instruction SQL * @return multitype:$className */ public static function getAll($className, $condition = '', $loadManyToOne = true) { $objects = array(); $membersManyToOne = Reflexion::getMembersWithAnnotation($className, "ManyToOne"); $tableName = OrmUtils::getTableName($className); if ($condition != '') { $condition = " WHERE " . $condition; } $query = DAO::$db->query("SELECT * FROM " . $tableName . $condition); \Logger::log("getAll", "SELECT * FROM " . $tableName . $condition); foreach ($query as $row) { //Pour chaque enregistrement : instanciation d'un objet $o = new $className(); $objects[] = $o; foreach ($row as $k => $v) { //Modificateur et test de son existance if (!is_numeric($k)) { $accesseur = "set" . ucfirst($k); if (method_exists($o, $accesseur)) { $o->{$accesseur}($v); } if ($loadManyToOne === true && OrmUtils::isMemberInManyToOne($className, $membersManyToOne, $k)) { DAO::getOneManyToOne($o, array($k => $v), $membersManyToOne); } } } DAO::addInstanceInObjects($o); } return $objects; }