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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Forum] Souci avec les fonctions PHP


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut [Forum] Souci avec les fonctions PHP
    Yop les amis,

    Bon alors voila sur mon site j'appelle le modele et la vue avec une fonction 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    $GLOBALS['Controller'] = array(
    ****'Description' => 'Informations Games',
    ****'NameController' => $NC,
    ****'View' => $NC,
    ****'Modele' => $NC,
    ****'LastUpdate' => '08/10/2014');
    *
    function MVCView($View){
    ****include(PATH_MVC_VIEWS.'/view.'.$View.'.php');}
    function MVCModel($Model){
    ****include(PATH_MVC_MODELS.'/model.'.$Model.'.php');}
    *
    //Inclusion du modele du controleur
    MVCModel($GLOBALS['Controller']['Modele']);
    *
    ****//Game demandé dans $_GET['game']
    if (!empty($_GET['id'])) {
    ********$GLOBALS['Views'] = 1;
    }
    ELSE{
    ****if (strtolower(empty($_GET['game']))) {
    ********$GLOBALS['Views'] = 0;
    ********$test = "test";
    ****}
    ****ELSE {
    ********$GLOBALS['Views'] = 1;
    ********$test = "test";
    ****}
    }
    /* Affichage de la vue */
    MVCView($GLOBALS['Controller']['View']);
    ?>
    le souci c'est que la variable $test que j'ai declaré ne s'affiche pas dans la vue (Notice: Undefined variable: test in /home/elite/srv_apache/public/includes/views/view.games.php on line 25)

    par contre si je vire les fonctions qui appellent la vue et le modele 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    //Informations du controleur dans un Array()
    $GLOBALS['Controller'] = array(
    ****'Description' => 'Informations Games',
    ****'NameController' => $NC,
    ****'View' => $NC,
    ****'Modele' => $NC,
    ****'LastUpdate' => '08/10/2014');
    *
    *
    *
    *
    //Inclusion du modele du controleur
    include(PATH_MVC_MODELS.'/model.'.$GLOBALS['Controller']['Modele'].'.php');
    *
    *
    ****//Game demandé dans $_GET['game']
    if (!empty($_GET['id'])) {
    ********$GLOBALS['Views'] = 1;
    }
    ELSE{
    ****if (strtolower(empty($_GET['game']))) {
    ********$GLOBALS['Views'] = 0;
    ********$test = "test";
    ****}
    ****ELSE {
    ********$GLOBALS['Views'] = 1;
    ********$test = "test";
    ****}
    }
    /* Affichage de la vue */
    include(PATH_MVC_VIEWS.'/view.'.$GLOBALS['Controller']['View'].'.php');
    Bhé là la variable $test s'affiche je comprend pas pourquoi
    Enfaite le fait d'avoir passé l'include dans une fonction rend toutes les variables du controleur introuvable dans la vue POURQUOI ??

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Bonsoir,

    C'est tout à fait normal, $test est définie en dehors d'une fonction et n'est donc pas visible à l'intérieur d'une fonction.
    Voir la doc: http://php.net/manual/fr/language.variables.scope.php

    Pour le récupérer dans la fonction, il faut soit l'utiliser en paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function MVCView($View, $test)
    , ce qui est la meilleure solution, ou la récupérer en tant que variable globale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function MVCView($View) {
    $test = $GLOBALS['test'];
    }

Discussions similaires

  1. Soucis avec les arguments d'une fonction
    Par SRV33 dans le forum Général Python
    Réponses: 4
    Dernier message: 15/08/2016, 19h53
  2. Soucis avec les fonctions de traitement de fichiers
    Par dartakham dans le forum Scilab
    Réponses: 5
    Dernier message: 24/04/2016, 16h15
  3. Réponses: 0
    Dernier message: 01/06/2015, 15h32
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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