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 :

Compréhension de la syntaxe en POO


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    en reconversion
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : en reconversion
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 28
    Points
    28
    Par défaut Compréhension de la syntaxe en POO
    Bonjour à tous,
    je suis en train de lire le tutoriel suivant sur l'architecture MVC. J'arrive à la conception d'un mini framework.

    https://bpesquet.developpez.com/tuto...ture-mvc/#LV-B

    Je bloque sur le fichier configuration.php dont le code est le suivant:
    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
    29
    30
    31
    32
    33
    34
    35
     
    <?php
     
    class Configuration {
     
      private static $parametres;
     
      // Renvoie la valeur d'un paramètre de configuration
      public static function get($nom, $valeurParDefaut = null) {
        if (isset(self::getParametres()[$nom])) {
          $valeur = self::getParametres()[$nom];
        }
        else {
          $valeur = $valeurParDefaut;
        }
        return $valeur;
      }
     
      // Renvoie le tableau des paramètres en le chargeant au besoin
      private static function getParametres() {
        if (self::$parametres == null) {
          $cheminFichier = "Config/prod.ini";
          if (!file_exists($cheminFichier)) {
            $cheminFichier = "Config/dev.ini";
          }
          if (!file_exists($cheminFichier)) {
            throw new Exception("Aucun fichier de configuration trouvé");
          }
          else {
            self::$parametres = parse_ini_file($cheminFichier);
          }
        }
        return self::$parametres;
      }
    }
    Le problème est que je ne comprends pas la ligne de code n°10 . Je vois bien que l'on appelle la méthode statique de la classe , mais à quoi sert [$nom] devant le nom de la méthode getParametres() ?
    D'avance merci pour votre aide.

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Dans la méthode getParametres(), ligne 30 tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            self::$parametres = parse_ini_file($cheminFichier);
        }
    }
    return self::$parametres;
    .

    La fonction parse_ini_file renvoie des pairs clef/valeur sous forme de tableau associatif. Ce tableau est donc affecté à la propriété statique $parametres, propriété qui est ensuite renvoyée par la méthode getParametres().

    Donc self::getParametres() renvoie ce tableau associatif et la ligne 10:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset(self::getParametres()[$nom])) {
    se contente de vérifier si la clef $nom existe dans ce tableau.

    C'est comme si on écrivait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $tableau = self::getParametres();
    if ( isset($tableau[$nom]) ) {
    ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( array_key_exists($nom, self::getParametres()) ) {
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    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,

    +1 à notre saucisse préférée
    Et cette syntaxe raccourcie rentre sous le concept de déréférencement.
    Tiens un peu de lecture par ici

    Gaffe : le déréférencement d'une chaîne de caractères n'est pas compatible unicode (en gros il ne faut l'utiliser de préférence qu'avec des tableaux)

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    en reconversion
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : en reconversion
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 28
    Points
    28
    Par défaut
    Merci infiniment pour vos réponses,
    Vous m'enlevez une belle épine du pied .
    Les deux dernières lignes de codes données par Cosmoknaki, sont quand même plus parlantes.
    Et comme je ne connaissais pas le concept de déréférencement me voilà renseigné !

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

Discussions similaires

  1. compréhension d'une syntaxe
    Par omelhor dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2012, 00h23
  2. compréhension d'un syntaxe
    Par omelhor dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/12/2011, 09h34
  3. Compréhension d'une syntaxe
    Par omelhor dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/12/2011, 17h03
  4. Réponses: 4
    Dernier message: 18/02/2009, 12h53
  5. Réponses: 13
    Dernier message: 15/11/2005, 15h47

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