Page 1 sur 1

tableau pour stocker des objets

Posté : 11 janv. 2009, 16:50
par kaljerhom
Je cherche une façon de faire pour stocker une collection d'objet dans un tableau.
L'idée est de faire une itération ou à chaque tour j'instancie une classe et je met cette instance dans un tableau.
Je ne vois pas comment faire en PHP.
Merci pour vos réponses.

P.S : j'ai trouvé la Classe ArrayObject et j'ai pondu un script comme ceci :
public function /*array(ArticleDTO)*/ getAllTitleArticle()
	{
		try
		{
			$pdo = ConnexionPDO::getInstance();
			$sql = "SELECT * FROM article";
			$st = $pdo->getDBH()->prepare($sql);
			$st->execute();
			
			/*ArticleDTO*/ $articleDTO = new ArticleDTO();
			$array = new ArrayObject();//array();//ArrayObject();
			
			while($resultat->$st->fetch())
			{
				$articleDTO->setIdArticle($resultat['id']);
				$articleDTO->setTitre($resultat['titre']);
				$articleDTO->setTimestamp($resultat['date']);
				//$articleDTO->setContenu($resultat['contenu']);
				
				$array->append($articleDTO);
			}
		}
		catch (Exception $e){	echo 'Exception reçue : ',  $e->getMessage(), "\n";		}
		
		CloseConnBD::closeConnection($pdo->getDBH());
		
		return $array;
	}
Mais cela ne fonctionne pas.

Posté : 11 janv. 2009, 18:30
par stopher
Salut ,

Je ne vois pas ce que tu veux faire exactement !

Tu veux que tes Objets soient persistant d'une page à l'autre ?

dans ce cas , il faut sérialiser pour sauvegarder

Sinon dans PHP5 , les objets sont passé par défaut par référence , tu retrouveras donc uniquement des références dans ton tableau .

Les paramètres de l'objet ne sont pas sauvegardés dans ce tableau ..

Mais je ne suis pas sure d'avoir bien saisi ce que tu souhaites faire exactement ...

Posté : 11 janv. 2009, 19:02
par kaljerhom
Ce que je veux c'est typer le resultat de ma requete SQL.
Celle ci me retourne des données qui peuvent etre agregées en objets de type ArticleDTO.
Comme ma requete retourne une liste d'articleDTO j'aimerais pouvoir stocker mes références dans un objet "tableau" et ainsi retourner cet unique objet qui stocke touttes mes références.

Posté : 11 janv. 2009, 19:21
par stopher
Ha ok , je comprend mieux ..

Pour quoi ne pas utiliser la méthode fetchobject() plutot que fetch() .

http://fr2.php.net/manual/fr/pdostateme ... object.php

Posté : 11 janv. 2009, 20:11
par fab
un tableau d'objet c'est un simple array() qui contient des objets
$array = array();
while(/* ta condition*/)
{
  $current = new MaClasseModele();
  $current->setMonAttribut(/* ... */ );
  $array[] = $current;
}
après tu fais un foreach($array as $blabla) et c'est parti :)

Posté : 11 janv. 2009, 21:11
par SpintroniK
En faisant un

$sql->setFetchMode(PDO::FETCH_OBJ);
$req = $sql->query("SELECT ....");

suivi d'un

$resultat = $req->fetchAll();

tu récupère un tableau d'objets... (faire un var_dump($resultat) pour bien comprendre).

Posté : 12 janv. 2009, 01:44
par Hywan
Hey :),

Sinon, si tu veux créer ton objet et qu'il se comporte comme un tableau (ou une collection, c'est équivalent), tu peux regarder deux choses : les itérateurs et les interfaces de tableaux.
PHP a deux interfaces itérateurs : IteratorAggregate et Iterator, respectivement pour les itérateurs agrégés (utilisation de la méthode getIterator pour obtenir un itérateur) et les itérateurs normaux (utilisation des méthodes current, key, next, rewind et valid).
PHP a aussi les interfaces ArrayAccess, SeekableIterator (fille d'Iterator), Countable etc. Je te laisse regarder http://php.net/~helly/ pour plus d'informations.

Posté : 26 janv. 2009, 12:11
par kaljerhom
Merci :D