![]() |
POO, gestion et utilisation - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : POO, gestion et utilisation (/showthread.php?tid=2859) |
RE: POO, gestion et utilisation - niahoo - 28-11-2010 (27-11-2010, 06:48 PM)Ter Rowan a écrit : quand je veux un tableau d'objet, j'utilise un array, je ne connaissais pas arrayObject donc je confirme qu'en php l'array simple peut très bien stocké des objets idem non plus précisément, l'arrayobject est une classe qui se comporte comme un tableau. c'est à dire que si tu as une classe qui hérite de arrayobject et qui implémente correctement les méthodes, tu pourras faire ça: mettons que ta classe personnage dispose d'une méthode qui te renvoie la liste de ses armes modofiée par ses différents bonus. Cette liste des armes est une instance d'une classe qui implémente arrayObject. Tu pourras donc faire:
Edit: ça permet aussi d'envoyer l'obet en argument des fonctions sort(), ksort(), etc.. (suis pas sur mais y a de fortes chances). RE: POO, gestion et utilisation - Argorate - 28-11-2010 Une classe pour gérer les tableaux? quel interet là? (vous vous prenez serieusement la tete sur des trucs de base^^) RE: POO, gestion et utilisation - niahoo - 28-11-2010 Tu n'a pas lu. C'est une interface qui permet à ta classe d'avoir le comportement d'un tableau. dans mon exemple bidon au dessus, je fais par exemple « $armes[] = new Weapon($weapon_id, $myplayer->weaponBonuses()); » mais n'oublions pas que $armes est une instance d'une classe perso, donc tu as tous les $armes->getCeQueTuVeux(), $armes->getBestDPSWeaponID(), $armes-><obtenir les armes pour lesquelles les bonus donnés n'auront plus d'effet en s'améliorant>() etc.. Fin bon c'est pas un tableau quoi. Après je m'en suis jamais servi de cette interface. Y a moyen de faire plus simple. mais ce n'est PAS un simple tableau. ça peut te permettre d'implémenter des fonctions de tri avancées si ton array contient lui-même des array, ou des tris sur des valeurs numériques imbriquées dans du texte, etc.." RE: POO, gestion et utilisation - christouphe - 28-11-2010 (28-11-2010, 03:53 AM)niahoo a écrit : $armes est une instance d'une classe perso c'est pas trop logique niveau sémantique là.... RE: POO, gestion et utilisation - niahoo - 29-11-2010 Comment ça ? RE: POO, gestion et utilisation - Kihmé - 29-11-2010 il veut dire par là que arme instance de la classe perso ça parait difficilement concevable. Merlin instance de la classe perso c'est logique mais Excalibure instance de la classe perso ne l'est pas. Tu dois plutôt avoir deux classes, Perso et Arme et dans Perso tu as un attribut arme de type Arme, non? Une instance d'une classe est un objet fabriqué à partir de cette classe il est donc de type "NomClass". RE: POO, gestion et utilisation - niahoo - 29-11-2010 naaaaaaaaaaaaaaaaaaaaaaan !! $arme instance d'une classe perso-nnelle, une classe créée par moi-moi qui contient 50 méthodes mais qui laisse accéder simplement ses données comme avec un tableau par des clés, des foreach, des tris. Une classe bien pratique donc (fin je le répète, j'en ai jamais eu besoin). $arme, donc, instance de la classe Arsenal ou WeaponsInventory, enfin une liste d'armes portées par un joueur tenant compte des bonus dudit joueur. mais pas $arme instance d'un ArrayObject destiné simplement à avoir un array mais plus lent juste histoire de dire qu'on fait de l'objet ! RE: POO, gestion et utilisation - christouphe - 29-11-2010 Arfff, désolé mais vu comment tu l'as expliqué, j'ai compris perso-nnage ![]() Ta dernière phrase me perd... Soit tu fais de l'objet, soit tu n'est fait pas. Exemple de PDO où tu peux très bien l'utiliser mode objet pur, ou en mode procédural. Si je te suis, faire un arrayObject serait une sorte de chimère ? Donc pour moi inutile. RE: POO, gestion et utilisation - niahoo - 29-11-2010 Ben c'est ce que je me suis dit. Si j'ai vraiment besoin d'un tableau et que je développe en php Objet, généralement je vais donner à ma classe une propriété qui sera un simple array et je ferai avec ça. Dans ce topic on voit un exemple de code où on peut lire « $machin = new ArrayObject; » Bon, ben ça ça sert à rien. Ma dernière phrase signifie « Si tu créés une instance de ArrayObject tu te retrouves connement avec un array, sauf que ton programme sera plus lent puisque c'est un objet bien plus complexe qui imite le comportement d'un tableau. Mais si ta propre classe implémente les interfaces de ArrayObject alors tu te retrouves avec une super-array auquel tu peux ajouter les comportements de ton choix. Je pense pas que ce soit une chimère, je pense simplement que ce n'est pas utile dans ce que nous faisons courrament. Après, si je devais faire un module qui trie des données selon une certaine manière, plus complexe que l'ordre alphabetique ou les ordinaux, je me tournerai peut-être vers ces interfaces, histoire de donner à ma classe une interface simple (celle d'un array) tout en pouvant coder plein de truc comme un porc à l'intérieur ». RE: POO, gestion et utilisation - christouphe - 29-11-2010 Mais à partir du moment où ton "objet" est un tableau, toutes les propriétés intrinsèques d'un objet sont caduques. C'est pour cela que je ne comprends pas l'intérêt d'un "super tableau" comme tu le dis. Concernant l'implémentation interne de la classe, pas besoin de faire un arrayObject pour "coder comme un porc" ![]() |