Page 1 sur 4

collection d'objets

Posté : 16 juil. 2008, 09:18
par rufus_
Bonjour

je programme en .net et il est très facile de créer une structure (ou class) et faire une collection personnalisée de cette structure avec des propriétés et méthodes

est ce que quelque chose comme ca est possible en php 5 ?

par exemple

public structure

nom as string
prenom as string
email as string
age as byte

end structure


et une collection de cette structure

merci

Posté : 16 juil. 2008, 09:39
par Sékiltoyai
Euh, poo tout simplement : http://fr3.php.net/manual/fr/language.oop5.php
:-/

Posté : 16 juil. 2008, 09:59
par rufus_
merci mais je ne vois pas de collection d'objet (de class)

Posté : 16 juil. 2008, 10:41
par Calimero
merci mais je ne vois pas de collection d'objet (de class)
En php le concept équivalent est tout simplement une classe.

Posté : 16 juil. 2008, 10:49
par rufus_
une collection est une class en C# (qui implement une class de base collection) aussi mais la je ne vois pas comment par exemple remplir un objet (structure ou class , mettons un membre avec nom , prenom , ect...) depuis une base de données et ensuite par la collection de cet objet le distribuer dans du xhtml

si vous connaissez un exemple quelque part
merci

Posté : 17 juil. 2008, 12:37
par mere-teresa
En PHP, tu n'es pas obligé de faire de la POO, peut-être que pour ton exemple (récup data de la DB, puis génération de HTML), les tableaux suffiront.
Tu fais un tableau multidimensionnel :
$lesUsers[0]['nom']
$lesUsers[0]['prenom']
$lesUsers[0]['age']
$lesUsers[1]['nom']
$lesUsers[1]['prenom']
$lesUsers[1]['age']
etc...

Tu peux réaliser cette opération avec les fonctions de *_fetch_num() ou *_fetch_array()

Posté : 17 juil. 2008, 15:13
par rufus_
merci je sais faire sans objet mais la poo offre d'autres possibilites

Posté : 17 juil. 2008, 17:07
par Hywan
Hey :),

Bah si tu veux utiliser une collection en PHP, dans le sens collection d'objet, c'est simplement un tableau d'objet :
<?php

$collection = array(
    new StdClass(),
    new Exception(),
    …
);
Tu as aussi l'objet ArrayObject de la SPL qui te permet d'avoir des itérateurs, et autre chose sympathique (c'est un wrapperde tableau). Attention, c'est plus lent qu'un tableau, à utiliser avec modération :). Tu trouveras la documentation PHP ici pour l'objet ArrayObject.

Posté : 17 juil. 2008, 18:38
par rufus_
merci HyWaN , en effet c'est tout simple

Posté : 17 juil. 2008, 22:55
par Hywan
En relisant, je ne suis pas sûr d'avoir répondu correctement.
Je parle de collection d'objet, c'est à dire un ensemble d'objet. On rappelle qu'un objet est une instance d'une classe.

La notion dont tu parlais au début (structure) est en fait une classe en programmation orientée objet. Si tu veux remplir un objet automatiquement depuis une base de données, la solution de mere-teresa est idéale. Plus léger qu'un objet (dans ce cas), mais qui se manipule aussi bien : un tableau. Mais ici, c'est un tableau de chaîne de caractères (ou tableau de tableau de chaîne dans l'exemple de mere-teresa). Moi je parlais d'un tableau d'objet (qui devient donc une collection). Chaque objet peut représenter une personne, c'est sûr, mais tout dépend de ton besoin.

Pour être sûr que l'on donne les bonnes réponses, j'aimerais que tu détailles ton besoin, merci :).

Posté : 17 juil. 2008, 23:28
par rufus_
en C# ou vb.net tu crées une structure ou class qui sera ton objet abstrait , les variables ou property sont typées, boolean, date, string , byte , integer , double , ...
ensuite tu crees une class du genre :
Public Class membersCollection : Inherits CollectionBase qui sera une collection de ta structure et uniquement de ca
Public Function Add(ByVal item As members) As Integer
Return InnerList.Add(item)
End Function

tu écris les fonctions qui vont remplir les members depuis la base de données
ainsi ce n'est pas un simple array c'est tres riche comme possibilités, on se sert de ca sans cesse

je suis interresse par php5 alors que ca m'a jamais interresse avant a cause de cette possibilite de se servir d'objets

Posté : 17 juil. 2008, 23:31
par Hywan
Oui ok, bah là c'est clairement un objet avec des méthodes. Je confirme mes dires et ceux de Sékil, va jeter un œil à la POO de PHP, et voir les tableaux pour faire des collections.
Attention à ne pas ralentir le script. L'idée de Mere-teresa est bonne, et rapide.

Posté : 18 juil. 2008, 01:50
par Sékiltoyai
Jette un oeil à la SPL. HyWaN te parlait de ArrayObject, cela se rapproche de ce que tu disais, c'est à dire que tu peux faire un objet qui pourra être utilisé comme un tableau. Mais il n'y a rien qui pourraît clairement s'apparenter à des collections, et surtout qui serait supporté par toutes les sources de données. Il faudra souvent un formatage des données pour les adapter à la structure de données.

Posté : 18 juil. 2008, 09:23
par rufus_
c'est vrai que .net compile le code en dll et c'est different ... vous me direz pourquoi passer a php quand on a .net ?
reponse : microsoft me gave :-) et j'aime l'esprit du libre

je vais voir de plus pres ces objets php

et encore merci pour votre aide

Posté : 18 juil. 2008, 09:41
par Sékiltoyai
c'est vrai que .net compile le code en dll et c'est different ... vous me direz pourquoi passer a php quand on a .net ?
Parce que c'est complètement différent et que cela ne sert pas à la même chose...