예제 #1
0
 /**
  * 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;
 }