[RESOLU] Récupérer un array à l'intérieur d'une class

Petit nouveau ! | 5 Messages

20 mars 2014, 05:20

Bonjour à tous! je débute au niveau POO afin de réécrire un plugin pour wordpress au complet. La première version fonctionnait très bien sauf qu'elle devenait difficile à modifier avec le temps... Je vais donc faire simple.
Class Prix {
    Private $_prix;
    Private $_date;
    Public function __construct($prix, $date) {
        $this->_date = $date;
        $this->_prix = $prix;
    }
    Public function Getdate() {
        return $this->_date;
    }
    Public function GetPrix() {
        return $this->_prix;
    }
    Public function __toString() {
        return $this->_date . ' : $' . number_format($this->_prix, 2, '.', ' ');
    }
}

Class boutique {
    Private $_nom;
    private $_photo;
    private $_meta;
    Private $_Prix = array();
   
    Public function __construct($nom = null, $photo = null, $meta = null, $prix = null) {
        $this->_nom = $nom;
        $this->_photo = $photo;
        $this->_meta = $meta;
        $this->_Prix = $prix;
    }

Public function SetName($name) {
        $this->_nom = $name;
    }

    Public function GetName() {
        return $this->_nom;
    }

    public function SetPhoto($photo) {
        $this->_photo = $photo;
    }

    public function GetPhoto() {
        return $this->_photo;
    }

    public function GetMeta() {
        return $this->_meta;
    }

    Public function SetMeta($Meta) {
        $this->_meta = $Meta;
    }

    Public function SetPrix($Prix) {
        $this->_Prix = $Prix;
    }

    Public Function GetPrix() {
        return $this->_Prix;
    }
}
J'ai enlevé de ces deux class le superflu(fonctions non utile au problème et commentaires) pour alléger...
Mon problème se situe lorsque je veux accéder à un des prix de la boutique.
$prix1 = new Prix(14.99, "2014-03-20");
$prix2 = new Prix(100.99, "2014-03-25");
$boutique = new boutique("Le  Magazin Perdu", "http://perdu.com", "des metas données", array($prix1, $prix2));
echo $boutique->GetPrix()[0]->GetPrix();  // erreur
echo $boutique->GetPrix()[0]; // erreur
Dans le premier echo, comment fait t'on pour accéder à l'index (X) d'un array?
Et dans le deuxième, vu que j'ai la fonction magique __tostring(), ne devrait t'il pas pouvoir me le donner??

Probablement des question stupides, mais je commence au niveau POO et je suis un peu perdu dans ce cas précis.
Merci
Francois

ViPHP
xTG
ViPHP | 7331 Messages

20 mars 2014, 09:22

Le premier pourrait être écrit de la sorte :
$liste_prix = $boutique->GetPrix();
echo $liste_prix[0]->GetPrix();
Je pense pareil pour le second, le fait t'attaquer directement le tableau du retour de fonction ne me semble pas top.
Il me semble qu'il y a une écriture possible mais je ne m'en souviens plus (essayer avec des parenthèses).

Petit nouveau ! | 5 Messages

20 mars 2014, 14:59

@xTG merci pour les indications! Je vais m'en tenir à cela et voir si c'est compatible avec le projet!

Francois

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 mars 2014, 16:17

salut,

ce que tu cherche à faire est possible avec php, mais que depuis la version 5.5 http://fr2.php.net/manual/fr/language.t ... example-93

@+
Il en faut peu pour être heureux ......