tableau pour stocker des objets

Eléphanteau du PHP | 17 Messages

11 janv. 2009, 16:50

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.

ViPHP
ViPHP | 1136 Messages

11 janv. 2009, 18:30

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 ...

Eléphanteau du PHP | 17 Messages

11 janv. 2009, 19:02

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.

ViPHP
ViPHP | 1136 Messages

11 janv. 2009, 19:21

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

ViPHP
fab
ViPHP | 2657 Messages

11 janv. 2009, 20:11

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 :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 209 Messages

11 janv. 2009, 21:11

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).

ViPHP
ViPHP | 4674 Messages

12 janv. 2009, 01:44

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.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphanteau du PHP | 17 Messages

26 janv. 2009, 12:11

Merci :D