- Variable inaccessible via autre fichier [Résolu] - PHP - Programmation
Marsh Posté le 28-06-2007 à 11:58:02
Dans un deuxième site que je développe, j'ai procédé de la même façon, c'est à dire que j'ai appelé la fonction include_once pour inclure un fichier et lorsque j'ai utilisé global $maVar dans l'une des méthodes, celle-ci ne contenait rien.
J'ai décidé placer mon fichier inclut dans la méthode même, et ça fonctionne. Pas même besoin d'un global.
Comment se fait-il que je ne puisse pas accéder à une variable extérieur à l'intérieur de ma classe ? C'est quand même bizarre ! Normalement, en mettant global, ca devrait fonctionner, vous ne croyez pas ?
Dans mon premier post, comment se fait-il que je pouvais accéder à ma variable et qu'après avoir modifier le nom, je ne pouvais plus ?
Merci pour ceux qui éluciderons ce mystère.
Marsh Posté le 29-06-2007 à 10:57:44
Comment se fait-il que ça, ça marche :
lang.php
Code :
|
test.php
Code :
|
Et dans le développement de mes sites, je procède de la même façon et ça ne marche pas. Pourquoi?
Marsh Posté le 29-06-2007 à 11:14:51
AlphaZone a écrit : Et depuis, plus aucun affichage. |
Je suis pas sûr d'avoir bien pigé ton problème, et si en plus rien ne s'affiche, c'est pas gagné...
Alors commence par activer toutes les erreurs ( error_reporting(E_ALL|E_STRICT); ), supprimer tous les opérateurs de silence que tu aurais pu mettre (les @ devant les fonctions, particulièrement les include), si besoin vérifier la config de php pour être sûr que les erreurs sont bien affichées/logguées, etc. Ca devrait permettre d'y voir plus clair.
Marsh Posté le 29-06-2007 à 11:36:58
J'ai activé toutes les erreurs. J'avais quelques petits bugs. Choses résolu à 98%, j'ai un problème de date_default_timezone_set() mais bon, ce n'est pas trop grave.
J'ai toujours le même problème : J'ai beau essayé d'accéder à mes tableaux (déclaré dans le fichier lang.php) depuis ma classe via global, rien à faire. Aucun affichage.
Marsh Posté le 29-06-2007 à 23:22:34
Aucun affichage c'est bizarre, t'es sûr que t'utilise pas l'opérateur @ avant de faire tes includes ?
Sinon j'en sais rien, ça ressemble à une erreur à la con, genre une typo dans le nom de la variable, ou dans le nom du fichier à inclure, etc.
Quelques pistes :
- Test l'affichage avec var_dump au lieu de echo (tu verras exactement le type)
- Vérifie que tu inclus bien le fichier dans l'espace global (et pas dans une fonction)
- Essaye d'afficher tout le tableau, pas seulement un champ
- Test si le tableau est défini avec isset
- Essaye de mettre un echo dans le fichier que tu veux inclure pour être sûr que c'est bien lui qui est inclus
- etc.
Marsh Posté le 02-07-2007 à 10:38:14
cgo2 a écrit : Aucun affichage c'est bizarre, t'es sûr que t'utilise pas l'opérateur @ avant de faire tes includes ? |
Oui certain.
cgo2 a écrit : Quelques pistes : |
J'essai d'afficher le type de ma variable et ca me retourne NULL
cgo2 a écrit : |
Toutes mes inclusions se font en global à part pour certains fichiers que je fais en local comme ceci :
Code :
|
Tu crois que ca viendrais de ca ?
cgo2 a écrit : |
Déjà essayé. Sans résultat.
cgo2 a écrit : |
Déjà fait.
Marsh Posté le 02-07-2007 à 15:11:23
Rien à faire
Marsh Posté le 02-07-2007 à 15:19:09
AlphaZone a écrit : Toutes mes inclusions se font en global à part pour certains fichiers que je fais en local comme ceci :
|
Je ne sais pas, quel est le rapport entre ce bout de code et l'inclusion de ton fichier lang.php ? Je ne comprends pas, je ne le vois pas dans l'exemple.
Marsh Posté le 02-07-2007 à 15:21:36
Ce bout de code inclut d'autres pages qui elles font appels à la page lang.php
Voici la page appélée qui inclut le fichier lang.php :
Code :
|
Marsh Posté le 02-07-2007 à 17:20:02
AlphaZone a écrit : Ce bout de code inclut d'autres pages qui elles font appels à la page lang.php |
Ce qui fait que, au final, si je comprend bien, "lang.php" est inclu par une fonction ?
Marsh Posté le 02-07-2007 à 17:40:53
En gros, OUI.
Sauf que, avant, je n'avais aucun problème. Je me suis juste amusé à renommer mon fichier et mon tableau. Depuis, PAF! Plus rien.
Et cette "bizarrerie" est revenu lorsque j'ai crée un deuxième site. Cette fois, ca me là fait dès la première exécution.
Marsh Posté le 02-07-2007 à 17:59:00
AlphaZone a écrit : En gros, OUI. |
Alors c'est une simple question de portée de variables. Pour vérifier, essaye de définir ton tableau avec $GLOBALS['lang'] au lieu de $lang.
Marsh Posté le 02-07-2007 à 18:08:07
Ok, je test ça ce soir. Je te tiens au courant. Merci pour ton aide.
Marsh Posté le 03-07-2007 à 12:11:54
J'ai trouvé remède à mon problème.
J'ai inclus mon fichier lang.php dans ma page FrontController.php (page qui gère les sous-controllers) en global. Dorénavant, ça fonctionne
Merci pour toutes les infos, ça m'a permit d'avoir un peu de recul sur la chose.
Marsh Posté le 28-06-2007 à 10:31:20
Bonjour à tous,
Je suis en train développer un site. Je me base sur le design pattern MVC.
J'ai un répertoire config, models, views, controllers.
Dans le répertoire config, je rassemble toute la configuration comme la config pour la BDD, config du site, etc... J'ai également un fichier qui contient les messages erreurs (errorsLog.php).
Dans mon répertoire j'ai une classe dans lequel je fais appel à mon fichier errorsLog.php via un include_once() puis dans mes méthodes, je déclare mon tableau contenant les messages d'erreurs : global $errors;
Jusqu'à présent tout fonctionnait. Puis hier soir, j'ai voulu changer le nom du tableau en $lang et le nom du fichier errorsLog.php en lang.php. Et depuis, plus aucun affichage.
J'ai fait un echo dans mon fichier lang.php : j'ai bien accès au tableau mais quand je fais un echo dans ma classe, plus rien ne s'affiche.
J'ai rien modifié en dehors des noms.
Est-ce que cela vous est déjà arrivé ? Si oui, pourquoi ca me fait ca ?
Merci pour votre aide.
Message édité par AlphaZone le 03-07-2007 à 12:12:19
---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."