1

j'ai un souci.

dans un fichier (cfg.php) j'ai :

<?php

$cfg = Array();
$cfg["db_dsn"]     = "cekivabien";
$cfg["db_user"]    = "cekivabien";
$cfg["db_pass"]    = "cekivabien";
$cfg["db_options"] = null;

var_dump($cfg);

?>


dans un autre j'ai:

<?php
include("cfg.php");

//project dependent model. One instance per session.

class Model {
        private $db;
        private $user;

        public function __construct()
        {
                global $cfg;
                $this->user=null;
                var_dump($cfg);
                $this->db = new PDO( $cfg["db_dsn"], $cfg["db_user"], $cfg["db_pass"], $cfg["db_options"]);
        }
.......



le var_dump dans le fichier de config m'affiche ce que j'attends , mais celui dans la classe m'affiche null neutral
j'ai loupé quoi?

2

je trouve ca pas très propre...il vaut mieux passer ton tableau $cfg en paramètre de ton constructeur. de plus, met un global $cfg; dans ton fichier cfg.php sinon il restera dans include
Ancien pseudo : lolo

3

ça fait pareil avec un global $cfg; dans le fichier de conf.

4

Non y'a pas besoin de global dans le cfg.php ... Le include du PHP fonctionne comme le #include du (préprocesseur) C... A moins que ça aie changé après PHP5 mais j'en doute.
Pour le reste tu as essayé de regarder le contenu de $GLOBALS dans ton constructeur ? (et au pire normalement $GLOBALS['cfg'] doit marcher)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

5

il vaut NULL.

le constructeur étant appelé depuis une autre méthode, j'ai mis un global $cfg dans cette méthode , sans succès.

j'utilise __autoload($classname) est ce que ça peut changer un truc?

je suis sous php 5.2.6 debian.

bon, le fichier n'appartenait pas à apache, il y avait un problème de lecture sans me rapporter d'erreur. Maintenant la global var apparait dans le toplevel de l'autre fichier

mais toujours pas dans la classe.

bon, j'ai résolu ça en mettant l'include de cfg dans le fichier de base, sur lequel l'exécution commence.

__autoload() produit des comportements bizarres , je vais m'en passer.