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 :

Cannot redeclare class/autoloading à partir du post #11


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut Cannot redeclare class/autoloading à partir du post #11
    Bonsoir,

    j'ai le message d'erreur du titre. En m'inspirant de cette vieille discussion (https://www.developpez.net/forums/d1...-seule-classe/), preuve que j'ai déjà eu ce problème, j'ai essayé ce code :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if(!in_array("MyPdo",get_declared_classes())) {
    class MyPdo extends PDO {
    //...déclaration de la classe
    }
    mais l'erreur reste. Donc comment la supprimer ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Je m'aperçois que je n'ai pas donné de détails. Donc pour créer la variable de connexion, je mets sur chaque page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include_once "../includes/connect_mysql.php";
    où connect_mysql.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    if(empty($bdd)){
    	include_once (__DIR__.'/class_MyPdo.php');
    }
    //// connexion
    try{
    				if(empty($bdd)) $bdd = new MyPdo("calendar");//("calendar");
      }
    catch(PDOException $e){
    				echo "argggggggggggggg".$e->getMessage();
    				return(FALSE);
    			}			
    ?>

    et class_MyPdo.php :

    Code php : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php
    error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE);
    ini_set('display_errors','1'); 
     
    // MyPDO
     // ls : la classe MyPdo hérite de la classe PDO (extends)
     if(!in_array("MyPdo",get_declared_classes())) {
    class MyPdo extends PDO {
     
    	protected $DB_NAME;
     
    	protected $HOST = "---";
     
    	protected $USER ="---";
     
    	protected $PASS ="---";
     
     
     
    // ls : le constructeur de MyPdo appelle le constructeur de PDO en lui passant ses paramètres	
    	function __construct($db_name) {	
    	/* ls : la variable $pdo_options, ça date de ma formation de 2012 */ 
    	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    	$pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;//important sur les configs récentes
    	$pdo_options[PDO::ATTR_DEFAULT_FETCH_MODE] = PDO::FETCH_OBJ;//pour le mode objet
    	$pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";//pour l'utf-8
     
    	$this->DB_NAME = $db_name;
    	parent::__construct('mysql:host=' . $this->HOST . ';dbname=' . $this->DB_NAME,$this->USER,$this->PASS,$pdo_options);
     
    	}
    }	
     
    }
    ?>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux essayer avec class_exists.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Merci de la proposition Celira ; néanmoins si je rajoute l'utilisation de cette fonction :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if(!class_exists('MyPdo'))) {
    class MyPdo extends PDO {
    //déclaration de la classe
      }
    }
    page blanche
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    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
    Salut laurentSc

    Pourquoi n'es-tu pas passé au mécanisme d'autoloading ?
    Ce problème ne se serait jamais posé.

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Tu m'as déjà fait la même remarque y a 2,5 ans ! https://www.developpez.net/forums/d1...-seule-classe/. J'avais abandonné n'y arrivant pas.

    Je viens de réessayer :

    Code dans la page principale :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    function my_autoloader($class) {
        include 'includes/class_'.$class.'.php';
    }
     
    spl_autoload_register('my_autoloader');
    ?>
    suppression des include où on définit la classe.
    En gros dans la page connect_mysql.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
     
    	//include_once (__DIR__.'/class_MyPdo.php');
     
    //// connexion
    try{
    				$bdd = new MyPdo("calendar");//("calendar");
      }
    catch(PDOException $e){
    				echo "argggggggggggggg".$e->getMessage();
    				return(FALSE);
    			}			
    ?>

    Mais ce fichier reste inclus là où on a besoin de la base de donnée : include (dirname(__DIR__).'/includes/connect_mysql.php');mais page blanche...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #7
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Hello,

    quel est le contenu de la page calendar.php ? Celle qui produit l'erreur.

    Tu parle de page blanche, mais tu parles d'une erreur, comment tu peux avoir les deux ?

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Désolé mais pas là de la journée et je viens seulement de voir le message...

    A vrai dire, ce message d'erreur, je ne sais plus ce que c'était, probablement un essai vite supprimé. Pour ne pas porter confusion, j'ai modifié le post #6 et je l'ai supprimé.

    Je m'apprête à créer un fichier de test pour faire marcher cet autoload. Je reviens ici quand ce sera fait.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #9
    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
    Tiens ici une discussion sur le mécanisme d'autoloading des classes.

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Merci, pour demain, si j'ai le temps...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Bon, j'ai finalement le temps de regarder cette discussion. Voici mes questions.

    Tout d'abord :
    Citation Envoyé par rawsrc Voir le message

    Passer à la POO c'est tip-top.
    Sauf que jreaux62 m'a déconseillé de passer du procédural à la POO car il s'attendait à une montagne de discussions (en gros, je ne serais pas prêt)

    Ensuite, on y parle pas mal des namespace et aussi de use, ce que je ne connais pas du tout ; faut-il s'y mettre ?

    Tu proposes le code d'un autoloader, mais j'ai compris qu'il suppose l'existence dans l'arborescence des répertoires src et Application. Ai-je bien compris ? (je n'ai pas ces répertoires).
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour Laurent,
    je n'ai pas souvenir d'avoir dit quoi que ce soit là-dessus !

    Moi, je ne connais pas la POO. Trop abstrait pour moi...
    Donc, je ne pourrai pas t'aider en POO.


    Par contre, ce que j'ai pu dire, c'est que tu codes comme un certain savant fou qui crée des MONSTRES !!

    Et je pense que ton problème vient surtout de là : tu colles des bouts de code les uns à la suite des autres, sans grand souci de logique et de cohérence...

    Commence par METTRE de L'ORDRE dans ton code !
    RANGE tes affaires !

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    https://www.developpez.net/forums/d1...nter-2-champs/

    Citation Envoyé par laurentSc Voir le message
    passer du procédural à la POO
    Citation Envoyé par jreaux62 Voir le message
    OUBLIE TOUT DE SUITE !!


    1/ Comme tu le dis TOUJOURS toi-même : TU N'AS PAS DE TEMPS !

    2/ On ne va pas tout reprendre à zéro avec toi : on n'a pas le temps non plus... ni l'énergie...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  14. #14
    Invité
    Invité(e)
    Par défaut
    OK.
    Le fait est que tu dis sans arrêt : "JE N'AI PAS DE TEMPS"

    Or il faut du temps pour apprendre.
    Et je pense que la POO demande une rigueur que tu n'as pas.
    Mais ça n'engage que moi.

  15. #15
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Bon, je reviens à l'autoload et à la page blanche. J'ai fait un test très basique qui reproduit la page blanche (et en fait, la seule POO est la gestion de PDO et y en a pas d'autre).

    Code php : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <title>squelette</title>
    <?php
     
    //require_once '../includes/testautoloader.php';
    ?>
    <meta charset="UTF-8"/>
     
    </head>
    <body>
    <?php
    function my_autoloader($class) {
        include 'includes/class_'.$class.'.php';
    }
    spl_autoload_register('my_autoloader');
    ?>
     
    <section>
    <article>
    squelette
    <?php
    //testautoloader();
    ?>
    </article>
    </section>
    </body>
    </html>

    testautoloader.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    function  testautoloader()
    {
    	include (dirname(__DIR__).'/includes/connect_mysql.php');
    }
    ?>

    connect_mysql.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      <?php 
     
    	//include_once (__DIR__.'/class_MyPdo.php');
     
    //// connexion
    try{
    				$bdd = new MyPdo("calendar");//("calendar");
      }
    catch(PDOException $e){
    				echo "argggggggggggggg".$e->getMessage();
    				return(FALSE);
    			}			
    ?>

    class_MyPdo.php :
    Code php : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php
    error_reporting(E_ALL ^ E_DEPRECATED ^ E_NOTICE);
    ini_set('display_errors','1'); 
    echo "<br/>4 class_My_pdo.php<br/>";
     
     
    // MyPDO
     // ls : la classe MyPdo hérite de la classe PDO (extends)
    class MyPdo extends PDO {
     
    	protected $DB_NAME;
     
    	protected $HOST = "---";
     
    	protected $USER ="---";
     
    	protected $PASS ="---";
     
     
     
    // ls : le constructeur de MyPdo appelle le constructeur de PDO en lui passant ses paramètres	
    	function __construct($db_name) {	
    	/* ls : la variable $pdo_options, ça date de ma formation de 2012 */ 
    	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    	$pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;//important sur les configs récentes
    	$pdo_options[PDO::ATTR_DEFAULT_FETCH_MODE] = PDO::FETCH_OBJ;//pour le mode objet
    	$pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";//pour l'utf-8
     
    	$this->DB_NAME = $db_name;
    	parent::__construct('mysql:host=' . $this->HOST . ';dbname=' . $this->DB_NAME,$this->USER,$this->PASS,$pdo_options);
     
    	}
     
    }
    ?>
    si la ligne 7 du code principal est commentée, ça affiche bien squelette mais si je la décommente, page blanche.

    Il est où le bug ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  16. #16
    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
    Salut,

    bon, toutes réflexions mises à part, je reviens vers la problématique principale.
    L'autoloader est un mécansime qui permet en gros de transformer des noms de classes en noms de fichiers. Une fois que tu as le nom de fichier pleinement qualifié, tu peux l'inclure automatiquement.
    Quand tu cherches à inclure le code source d'un fichier, soit tu fais un banal include ou require soit tu utilises la programmation orientée objet et dans ce cas tu dois te baser sur des espaces de nom et des classes qui une fois transformés deviendront des chemins de fichier du système d'exploitation (du coup, très faciles à inclure).

    Relis bien attentivement toutes mes explications dans la discussion citée plus haut et tu verras la logique sous-jacente.

    Pour tester un autolaoder, tu dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    use espace_de_nom_a\sous_espace_de_nom_b\MaClasse;
     
    $a = new MaClasse();
    Dans ce code l'autoloader doit se débrouiller tout seul pour trouver le chemin du fichier MaClasse, tu ne dois faire de ton côté aucun include ou require.

  17. #17
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Bon, c'est pas encore au point

    Voilà ce que j'ai cru qu'il fallait faire mais c'est visiblement pas bon, vu que page blanche...

    Voici l'autoloader que j'ai écrit à partir de ton code :

    Code php : 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
    19
    <?php
    $autoloader = function($full_class_name) {
        // on prépare le terrain : on remplace le séparteur d'espace de nom par le séparateur de répertoires du système
        $name = str_replace('\\', DIRECTORY_SEPARATOR, $full_class_name);
        // on construit le chemin complet du fichier à inclure :
        // il faut que l'autoloader soit toujours à la racine du site 
        $path = '..\includes\connect\'.$name.'.php';
     
        // on vérfie que le fichier existe et on l'inclut
        // sinon on passe la main à une autre autoloader (return false)
        if (is_file($path)) {
            include $path;
        } else {
            return false;
        }
    }; 
     
    spl_autoload_register($autoloader);
    ?>
    Le fichier appelé au départ n'est pas à la racine d'où il faut commencer par reculer (ligne 7). Le fichier de connexion (qui utilise la classe MyPdo) est dans le même répertoire que la classe (includes/connect)

    Mon fichier de connexion (connect_mysql.php) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php 
     
    	//include_once (__DIR__.'/class_MyPdo.php');
    use includes/connect/MyPdo.php;
    //// connexion
    try{
    				$bdd = new MyPdo("calendar");
    catch(PDOException $e){
    				echo "argggggggggggggg".$e->getMessage();
    				return(FALSE);
    			}			
    ?>
    J.
    Je n'ai pas de déclaration de namespace et d'ailleurs si je le faisais, aucune idée où les mettre...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  18. #18
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Hello,

    si tu n'as pas de déclaration de namespace, enlève le use includes/connect/MyPdo.php;

    Ensuite, pour ta facilité la vie avec les emplacements des fichiers, crée toi une constante qui a comme valeur le répertoire racine de ton application, afin d'éviter les ../ et se sera bien plus lisible ainsi.

    Tu parle de page blanche, as tu activé l'affichage des erreurs ? Cela pourrai grandement t'aider à comprendre ton erreur.

  19. #19
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 339
    Points : 5 724
    Points
    5 724
    Billets dans le blog
    1
    Par défaut
    Désolé mais pas là de la journée..

    Pour tester ça plus simplement, je l'ai mis sous wampserver alors qu'avant c'était sur le serveur.

    Tout d'abord, j'ai défini une constante ROOT, mais pour accéder au fichier config.php : include_once "../includes/config.php";difficile d'échapper au ../

    Ensuite, j'ai enlevé le use, mais :
    Class 'MyPdo' not found in C:\wamp64\www\vhstest160218\includes\connect\connect_mysql.php on line 7
    donc pas au point du tout. Donc comment faire ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  20. #20
    Invité
    Invité(e)
    Par défaut
    ...difficile d'échapper au ../...
    Je t'ai deja montre 10 fois comment...

    Sans vouloir te vexer...
    Ton problème est que tu oublies, au fur et à mesure, et tu reviens aux mêmes problématiques, encore et encore...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [1.x] Erreur installation, cannot redeclare class sfDoctrineBaseTask
    Par __fabrice dans le forum Symfony
    Réponses: 13
    Dernier message: 31/05/2010, 14h09
  2. Réponses: 2
    Dernier message: 10/01/2010, 18h39
  3. [Dates] Fatal error : Cannot redeclare class
    Par ediawara dans le forum Langage
    Réponses: 10
    Dernier message: 27/11/2007, 15h47
  4. [Wamp] cannot redeclare class maClasse
    Par pcdj dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 10/01/2007, 09h03
  5. Cannot redeclare class...
    Par DeezerD dans le forum Langage
    Réponses: 4
    Dernier message: 02/11/2005, 19h51

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