IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème d'include et de global [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 39
    Points : 70
    Points
    70
    Par défaut Problème d'include et de global
    Bonjour à tous.

    J'ai un souci sur une mise en place d'un système de routing pour gérer le référencement nat d'un site. Pour illustrer mon problème je croit qu'il n'y a rien de mieux qu'un bout de code qui montre ce qui ne va pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
     
    	// Ce fichier est inclu par un include 'this.php' dans la méthode Routeur::parse(), appelé dans un premier fichier qui filtre tous les appels 
    	// au site
     
    	include 'init.php'; // Défini une variable $PDO, objet PDO
     
    	func();
     
    	// Fonction exemple pour représenter mon problème
    	function func() {
    		global $PDO;
    		return $PDO->query('SELECT a FROM b')->fetchAll(PDO::FETCH_OBJ);
    	}
     
    ?>
     
    Fatal error: Call to a member function query() on a non-object in this.php on line 13
    Si ce problème dit quelque chose à quelqu'un, je serait très heureux de savoir quelle solution peut être mise en place.

    (Bien entendu je sais que les globales c'est mal etc... Mais je peut pas refondre le tout actuellement)

    Merci

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    si dans ton fichier init.php la déclaration de $PDO est correcte, cela voudrait dire que l'instanciation de [codeinline]$PDO[codeinline] n'a pas pu être faite correctement.
    Est-ce que tu as une gestion d'erreur dans init.php ?

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 39
    Points : 70
    Points
    70
    Par défaut
    Bien sur, il y'a évidemment le try {} catch() {} habituel, l'objet PDO est totalement utilisable dans la page en dehors de la fonction.

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    est ce que tu as essayé dans init.php de déclarer ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    global $PDO;
    $PDO = ...
    Au pire tu peux essayer de voir ce qui est global au sein de ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function func() {
       print_r($_GLOBALS);
    }

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 39
    Points : 70
    Points
    70
    Par défaut
    Définir le global avant la déclaration de la variable fonctionne.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Configuration] problème d'include à cause de l'arborescence
    Par hoaxpunk dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 15/12/2005, 18h00
  2. [EasyPHP] Problème d'include de fichier et adresse des images
    Par doudou34 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 02/11/2005, 22h46
  3. problèmes avec "include file" pour une page asp
    Par chipsense dans le forum ASP
    Réponses: 1
    Dernier message: 02/09/2005, 16h22
  4. [JSP] problème d'include ou d'import
    Par lipao17 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 06/04/2005, 14h39
  5. Problème d'include sous Dev-c++ 4.9.8.0
    Par Argonz dans le forum Dev-C++
    Réponses: 16
    Dernier message: 20/11/2003, 18h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo