Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2806 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [résolu] Parcourir un objet?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] Parcourir un objet?

n°1973483
masseur
Posté le 13-03-2010 à 14:34:34  profilanswer
 

Bonjour.
 
Je suis en train de tester un peux la poo, pour cela je réalise un petit panier assez simpliste.
Je possède une classe produit et une classe panier.
 
Je sauvegarde mon objet panier dans une session.
 
Dans ma page d'index j'aimerais donc afficher tout les produits disponibles dans le panier.
 
un

Code :
  1. echo '<pre>'.print_r($_SESSION['panier'], true).'</pre>';

me donne ceci.
 

Citation :


 
Panier Object
(
    [position:Panier:private] => 0
    [array:Panier:private] => Array
        (
            [0] => Produits Object
                (
                    [_id:Produits:private] => 1212111
                    [_nom:Produits:private] => frites
                    [_prix:Produits:private] => 4
                )
 
            [1] => Produits Object
                (
                    [_id:Produits:private] => 2147483647
                    [_nom:Produits:private] => steack
                    [_prix:Produits:private] => 3
                )
 
        )
 
)
 


 
Est il possible de parcourir cet objet avec du foreach (peux être faut il le serializer pour le parcourir et ainsi récupérer les informations), j'ai bien tenté de serializer le bouzin mais ca ne m'aide pas plus en fait dans la récupération des informations, je sais pas comment m'y prendre?
 
Merci par avance.


Message édité par masseur le 13-03-2010 à 18:20:41
mood
Publicité
Posté le 13-03-2010 à 14:34:34  profilanswer
 

n°1973485
gatsu35
Blablaté par Harko
Posté le 13-03-2010 à 14:48:32  profilanswer
 

bizarre mais tes propriétés sont privates nan ?
tu pourrais nous donner la déclaration de ta classe stp ?


---------------
Blablaté par Harko
n°1973489
masseur
Posté le 13-03-2010 à 15:42:28  profilanswer
 

Effectivement tout est en private.

 
Code :
  1. class Panier implements SeekableIterator, Countable{
  2. private $position = 0;
  3. private $array = array();
  4. ...
  5. }


Code :
  1. class Produits{
  2. private $_id;
  3. private $_nom;
  4. private $_prix;


Message édité par masseur le 13-03-2010 à 15:42:50
n°1973507
gatsu35
Blablaté par Harko
Posté le 13-03-2010 à 17:07:42  profilanswer
 

donc si tes propriétés sont en private, comment veux-tu y accéder [:petrus dei]
http://www.vulgarisation-informatique.com/php-poo.php

Citation :


Visibilité des propriétés et méthodes

 

PHP 5 introduit la notion de visibilité de méthodes et d'attributs. Chaques attributs et méthodes peuvent se voir attribuer un droit d'accès. Le principe de l'encapsulation voudrait que l'on mette tous les attributs uniquement modifiables et accessibles à l'intérieur de la classe, et les méthodes accessibles de l'extérieur. En pratique, ce n'est pas toujours le cas.

 

Les trois mots permettant de gérer les accès sont ceux-ci :

 

   * public : n'importe qui a accès à la méthode ou à l'attribut demandé.
    * protected : seule la classe ainsi que ses sous classes éventuelles (classes héritées, on verra ce que c'est plus loin).
    * private : seule la classe ayant défini l'élément peut y accéder.

 

Pour la classe Voiture, vous pouvez constater que les attributs ne sont pas modifiables à l'extérieur de la classe, il faut passer par les méthodes appropriées.



Message édité par gatsu35 le 13-03-2010 à 17:11:06

---------------
Blablaté par Harko
n°1973511
masseur
Posté le 13-03-2010 à 17:48:50  profilanswer
 

Non mais même si je met en public, je sais toujours pas comment parcourir mon objet et récupérer la valeur des variables.
 
Dans le code ci-dessous remplace par public si tu veux, mais je sais toujours pas comment accéder aux valeurs.
 
Merci
 

Code :
  1. Panier Object
  2. (
  3.     [position:Panier:private] => 0
  4.     [array:Panier:private] => Array
  5.         (
  6.             [0] => Produits Object
  7.                 (
  8.                     [_id:Produits:private] => 1212111
  9.                     [_nom:Produits:private] => frites
  10.                     [_prix:Produits:private] => 4
  11.                 )
  12.             [1] => Produits Object
  13.                 (
  14.                     [_id:Produits:private] => 2147483647
  15.                     [_nom:Produits:private] => steack
  16.                     [_prix:Produits:private] => 3
  17.                 )
  18.         )
  19. )


Message édité par masseur le 13-03-2010 à 17:49:15
n°1973513
flo850
moi je
Posté le 13-03-2010 à 17:56:49  profilanswer
 

tu vas declarer dans ta classe Produits les fonctions getPrice, getName, et getId
Puis dans panier, tu pourras faire un foreach($this->panier as $produit)

 

tu peux meme faire ça plus proprement en déclarant que ta classe panier implemente Iterator, ainsi , de l'exterieur tu peux faire foreach( $panier as $produit)

Message cité 1 fois
Message édité par flo850 le 13-03-2010 à 17:57:22

---------------

n°1973515
masseur
Posté le 13-03-2010 à 18:20:26  profilanswer
 

flo850 a écrit :

tu vas declarer dans ta classe Produits les fonctions getPrice, getName, et getId
Puis dans panier, tu pourras faire un foreach($this->panier as $produit)
 
tu peux meme faire ça plus proprement en déclarant que ta classe panier implemente Iterator, ainsi , de l'exterieur tu peux faire foreach( $panier as $produit)


 
Merci bien en effet j'ai implémenté cet Iterator et c'est nickel.
Merci bien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [résolu] Parcourir un objet?

 

Sujets relatifs
[Resolu] JS s'arrete de s'executer...[Résolu] Problème de socket urlretrieve
[RESOLU] Récupération valeur bouton radio et textarea - formulaire[Résolu] Problème Http -> Https
erreur objet attendu[Résolu] referencer des instances creees par une fonction...
[resolu]compatibilité ie6 ie7 mais bug anim flash[Résolu] Problème de requête
[RESOLU] pb vérification bouton radio formulaire - JS 
Plus de sujets relatifs à : [résolu] Parcourir un objet?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR