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 :

pourquoi faut t'il un échappement [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut pourquoi faut t'il un échappement
    Bonjour ,
    je charge ma classe Bdd via mon fichier et un include

    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
    19
    20
    21
    22
    23
    24
     
    <?php
    session_start();
    class Bdd {
        public static function getIntance() {
            try {
              // $instance = new PDO('....')
            } catch (PDOException $e) {
                    echo "Problème de oonnexion à la base de donnée";
            }
            return $instance;
        }
    }
     
    spl_autoload_register(function($class){
        $racine = '/var/www/';
        $path = str_replace('\\', DIRECTORY_SEPARATOR, $class.'.php');
        $path = $racine.$path;
        // echo $path;
        $isLoad = include $path;
    });
     
     
    ?>
    et j'appelle la base comme ceci
    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
     
    namespace\test\lib\bddentite;
     
    class Membre {//classe qui permet d'enregister les infos de chaque membres
     
        private $bdd;
     
        public function __construct() {//on vérifi la session du membre
            $this->bdd = \Bdd::getIntance(); // oblique
        }
     
        public function infObj() {
            echo "je suis la class Membre()";
        }
     
    }
    pourquoi netbeans a ajouter à échappé \Bdd;; ?? avec le \ ?

    je l'ai retiré mais cela ne fonctionne pas, je ne comprend pas bien ?

    merci de m' éclaircir sur ce point.

  2. #2
    Membre éprouvé Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Points : 1 105
    Points
    1 105
    Par défaut
    Bonjour,

    Le backslash devant vient de ton namespace (à priori ta classe est hors de tout namespace, donc seulement avec un backslash devant).

    Dans le cas de l'appel d'une classe, il faut la nommer avec son namespace car tu as fait une déclaration de namespace dans le second fichier que tu cites. Dans le premier, la déclaration de ta classe se fait hors de tout namespace, donc implicitement dans \ si on considère un système d'espace de nom.

    Pour finir avec les exemples, et rendre l'idée claire, si tu ajoutes dans Bdd un appel à une classe de la librairie standard type arrayObject, tu l'appellera sans rien devant (classe standard dans \). Si tu appelles la même classe dans Membre, il te faudra le \ pour lui indiquer le namespace.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    Merci de ta réponse, j'avais oublié que j'étais sous namespace,

    par contre j' hésite à mettre la class Bdd sous namespace,
    car je l'ai appelé Ini.php qui contient les login mais aussi des variables, ainsi
    que l'autoload que j'avais vraiment du mal à le faire fonctionner ,
    maintenant c'est comme une horloge

    le voici mon fichier ini

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
    session_start();
     
    define("RCN",'/var/www/');// on determine la racine du serveur
    define('RCN_URL', 'test/');
    define('RCN_APP', test/');
    
    class Bdd {
        public static function getIntance() {
            try {
               $instance = new PDO('mysql:host=localhost;dbname=nfa', 'root', 'test');
            } catch (PDOException $e) {
                    echo "Problème de oonnexion à la base de donnée";
            }
            return $instance;
        }
    }
    
    spl_autoload_register(function($class){
        $path = str_replace('\\', DIRECTORY_SEPARATOR, $class.'.php');
        $path = RCN.$path;
        $isLoad = include $path;
    });
    
    
    
    ?>

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

Discussions similaires

  1. Pourquoi faut il double-cliquer ?
    Par lethyss dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 27/06/2007, 09h09
  2. Pourquoi faut-il monter/démonter
    Par ChPr dans le forum Administration système
    Réponses: 9
    Dernier message: 10/05/2007, 13h22
  3. [Débat] Pourquoi faut il encore faire des sites Web compatibles IE ?
    Par Strix dans le forum Général Conception Web
    Réponses: 63
    Dernier message: 16/03/2007, 12h28
  4. Pourquoi faut-il utiliser des tables plutôt que des frames ?
    Par malicia_bm dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 09/10/2006, 09h20

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