[résolu] Parcourir un objet?

Parcourir un objet? [résolu] - PHP - Programmation

Marsh Posté le 13-03-2010 à 14:34:34    

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
Reply

Marsh Posté le 13-03-2010 à 14:34:34   

Reply

Marsh Posté le 13-03-2010 à 14:48:32    

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


---------------
Blablaté par Harko
Reply

Marsh Posté le 13-03-2010 à 15:42:28    

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
Reply

Marsh Posté le 13-03-2010 à 17:07:42    

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
Reply

Marsh Posté le 13-03-2010 à 17:48:50    

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
Reply

Marsh Posté le 13-03-2010 à 17:56:49    

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

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

Reply

Marsh Posté le 13-03-2010 à 18:20:26    

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed