CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Classes et portée de variable !

venez
venez
Niveau 9
06 septembre 2013 à 19:30:55

Salut à tous :-)

Imaginons le problème suivant avec ces 2 classes : :hap:

class core {

    public $config = "Vide";
    
    public function __construct() {
        $this->config = "Configuration chargée";
        echo 'Classe "core" > getConfig : "'.$this->getConfig().'"<br>';
        $this->db = new db();
    }
    
    public function getConfig() {
        return $this->config;
    }
    
}

class db extends core {

    public function __construct() {
        echo 'Classe "db" > getConfig : "'.parent::getConfig().'"<br>';
    }

}

// init
$core = new core();

Et lorsque j'initialise la classe core avec "$core = new core();", j'ai ceci en sortie :

Classe "core" > getConfig : "Configuration chargée"
Classe "db" > getConfig : "Vide"

Et mon problème si vous l'avez pas déjà vu, c'est que je ne parvient pas à récupérer la vrai valeur de $config. Depuis la classe db, quand je tente d'atteindre cette variable il me renvois la valeur définie lors de la déclaration de variable mais pas cette mise à jour par le __construct de "core" :(

Je tiens à dire que je débute en classe, object etc...

Merci d'avance :hap:

Schiffer
Schiffer
Niveau 10
06 septembre 2013 à 19:54:42

parent::__construct();
avant ton :
echo 'Classe "db" > getConfig : "'.parent::getConfig().'"<br>';

Schiffer
Schiffer
Niveau 10
06 septembre 2013 à 19:56:44

je veux dire

class db extends core {

public function __construct() {
parent::__construct();
echo 'Classe "db" > getConfig : "'.parent::getConfig().'"<br>';
}

}

venez
venez
Niveau 9
06 septembre 2013 à 21:33:23

Merci pour ta réponse, ça "fonctionne" :hap:
Mais ça veut dire que si par exemple dans mon construct, pour charger la config, j'inclus un .php, dans toute les sous-classes de core, le fichier config.php sera recharger à chaque fois ? :(
Je me demandai parceque c'est bizarre, on me repette toujours que la poo est pratique, economique, tout ça, et ben la je cherche enfaite :(

class core {

        public $config = array();

        public function __construct() {
                // Load config
                include('config.php');
                $this->config = $config;
                echo 'Classe "core" > Version : "'.$this->getVersion().'"<br>';
        }

        public function getVersion() {
                return $this->config['version'];
        }

}

class db extends core {

        public $config = array();

        public function __construct() {
                parent::__construct();
                echo 'Classe "db" > Version : "'.parent::getVersion().'"<br>';
        }

}

// init
$core = new core();
$core->db = new db();

Schiffer
Schiffer
Niveau 10
06 septembre 2013 à 21:50:56

C'est include_once pour inclure un php une seule fois
Et je te conseille de revoir les cours de POO

venez
venez
Niveau 9
06 septembre 2013 à 22:24:33

ça aurai été trop simple, si je remplace include par include_once, la class db tape dans le vide au niveau du $this->config = $config; dans le construct de core...

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment