Bonjour,
je voudrais savoir comment créer un objet qui permettrait de stocker une liste d'objets ?
Par exemple :
- class UserList : qui contiendrait une liste d'objets ci-dessous
- class User
Pourriez-vous m'éclairer s'il vous plait ?
Bonjour,
je voudrais savoir comment créer un objet qui permettrait de stocker une liste d'objets ?
Par exemple :
- class UserList : qui contiendrait une liste d'objets ci-dessous
- class User
Pourriez-vous m'éclairer s'il vous plait ?
ben tu fais un objet UserList qui a comme attribut un array() php dans lequel tu stock tes données
voici une interface que tu pourrais utiliser
ceci dit, tu peux utiliser un array() php... ça marche très bien vu qu'on est dynamiquement typé dans ce language... ça te permet de faire ce que tu veux sans casts...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class UserList { var $myArray=array(); function UserList() {} function add(user) {} function remove(user) {} }
Merci pour ta réponse. En fait j'etais en train de regarder du coté de la SPL avec les itérateurs.
Le sujet est marqué comme résolu. Mais tant pis.
Je me lance vraiment à fond dans la POO (avec php5) que depuis quelques semaines. Et dans les concepts de la POO ; il en existe un que j'ai encore du mal à saissir et maitriser : les collections.
Alors c'est vrai. On peut concevoir une collection d'objet comme un simple tableau d'objets ; ou mieux encore définir une classe MyClassList contenant un ensemble d'objets de type MyClass.
Mais PHP (ce magnifique outil que nous adorons tous ...) ne posséde il pas - par défaut - quelque chose qui puisse s'apparenter à une collection ? Ou bien faut il soit même à chaques fois coder ses propres collections de classes ?
J'ai aussi feuilleté la SPL ; et les itérateurs parraissent être une piste. Mais malheuresement la langue de Shakespare et moi ... (je suis plutôt latin ; donné moi une doc en espagnol je serais plus à l'aise :s)
Donc si quelqu'un aurait tout, ou partie d'un élément de réponse ... Voire même un simple lien vers un article ou tuto qui m'aurais échappé a ce sujet.
Merci.
L'équivalent des classes de collection (comme on peut les trouver en java) s'apparente donc aux Iterateurs en php. C'est niquel ca ^^
A moi un long week end a passer dans la doc :p
Voilà ; après quelques jours à travailler dessus ; j'en arrive à un résultat présentable.
voici donc ma classe de Collection d'objets.
rapide descriptif des méthodes d'accés :
Exemple d'utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 get_type() // Retourne le type des objets contenu dans la collection count() // Retourne le nombre d'objets contenu dans la collection if_exists(Object) // Teste si un objet identique existe dans la collection get_key(Object) // Renvoie l'index d'un objet de la collection get_object(int) // Renvoie l'objet de la collection contenu à l'index passé en paramètre get_range(int, int, [int]) // Retourne une partie de la collection. Voir la doc dans la source. insert(Object) // ajoute l'objet à la collection update(int, Object) // Modifie l'objet a l'index passé en paramètre delete(int) // Supprime l'objet de la collection à l'index passé en paramètre map(String, [array]) // Applique la méthode String sur tous les objets de la collection flush() // Vide la collection
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 require('class-Collection.inc.php'); class MyClass { public $msg; function __construct($msg){ $this->msg = $msg; } function __toString(){ return $this->msg; } } $MyCollection = new Collection('MyClass'); $MyCollection->insert(new MyClass('message 1')); $MyCollection->insert(new MyClass('message 2')); $MyCollection->insert(new MyClass('message 3')); $MyCollection->insert(new MyClass('message 4')); $MyCollection->insert(new MyClass('message 5')); $MyCollection->insert(new MyClass('message 6')); $MyCollection->insert(new MyClass('message 7')); $MyCollection->insert(new MyClass('message 8')); $MyCollection->insert(new MyClass('message 9')); $MyCollection->insert(new MyClass('message 10')); $MyCollection->insert(new MyClass('message 11')); $MyCollection->insert(new MyClass('message 12')); $MyCollection->insert(new MyClass('message 13')); $MyCollection->insert(new MyClass('message 14')); $MyCollection->insert(new MyClass('message 15')); $MyCollection->insert(new MyClass('message 16')); $MyCollection->insert(new MyClass('message 17')); $MyCollection->insert(new MyClass('message 18')); $MyCollection->insert(new MyClass('message 19')); $MyCollection->insert(new MyClass('message 20')); echo $MyCollection; foreach( $MyCollection as $key => $object ){ echo $key." : ".$object."<br />"; $object->msg = "Ahahahahah !"; } echo "<hr />"; foreach( $MyCollection as $key => $object ){ echo $key." : ".$object."<br />"; }
Salut,
désolé de ne répondre que maintenant, super le travail que tu as fait
suis débordé en ce moment mais je regarderai plus en détails, pour voir ce que je peux y apporter, s'il y a lieu
Bonne journée
merci.
Toutefois ce que j'ai montré est a titre d'exemple et peut largement être criticable.
Certaines méthodes (comme la méthode map()) fonctionnent encore mal. Mais j'essaye de résoudres les problémes petit a petit.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager