Créer une fonction "require"

Résolu
chabinot Messages postés 391 Statut Membre -  
chabinot Messages postés 391 Statut Membre -
Bonjour,

J'ai une liste de fichiers php comme suit:
require_once __DIR__ . '/menu.php';
require_once __DIR__ . '/audio.php';
require_once __DIR__ . '/audios.php';
require_once __DIR__ . '/diapo.php';
require_once __DIR__ . '/videos.php';

J'ai créé une fonction:
function getFile($file) {
       return require_once __DIR__ . '/' . $file . '.php';
}

J'ai essayé cette solution, mais apparemment elle ne marche pas.

Merci de votre aide
Cordialement

2 réponses

  1. Utilisateur anonyme
     
    Bonjour

    require_once est une instruction, et une fonction ne peut pas retourner une instruction.
    Par contre, elle peut l'exécuter :

    function getFile($file) {
           require_once __DIR__ . '/' . $file . '.php';
    }
    getFile('menu');
    ...
    1
    1. chabinot Messages postés 391 Statut Membre 16
       
      Merci,
      Hélas, cela ne fonctionne pas, j'ai dû me rabattre sur :
      $files = ['menu', 'audio', 'audios', 'diapo', 'videos'];
      foreach ($files as $file) {   
         $file .= '.php';
         require_once __DIR__ . '/' . $file;
      }
      

      Mais j'aimerais avoir une fonction qui me fait la même chose avec le paramètre $file ('menu') par exemple.
      0
    2. Utilisateur anonyme
       
      Mais si, ça marche. Peux-tu montrer le code tel que tu l'as essayé ?
      0
    3. chabinot Messages postés 391 Statut Membre 16
       
      Dans menu.php, j'ai un tableau :
      <?php
      $jeu = [
        '<a href="http://www.lci.fr/jeux/mots-fleches/" target="_blank">Métro - Fléchés</a>',
        '<a href="http://www.20minutes.fr/services/mots-fleches" target="_blank">20 Min - Fléchés</a>',
        '<a href="http://www.lci.fr/jeux/mots-croises/" target="_blank">Métro - Croisés</a>',
        '<a href="http://www.20minutes.fr/services/mots-croises" target="_blank">20 Min - Croisés</a>',
        '<a href="http://www.20minutes.fr/services/ifleches" target="_blank">20 Min - <span class="min">i</span>Fléchés</a>',
        '<a href="http://www.20minutes.fr/services/ironde-des-mots" target="_blank">20 Min - <span class="min">i</span>Ronde</a>',
        '<a href="http://www.lci.fr/jeux/puzzle/" target="_blank">Métro - Puzzle</a>',
        '<a href="http://www.20minutes.fr/services/mots-coupes" target="_blank">20 Min - mots coupés</a>',
      ];
      

      lorsque j'exécute le code
      $files = ['menu', 'audio', 'audios', 'diapo', 'videos'];
      foreach ($files as $file) {   
         $file .= '.php';
         require_once __DIR__ . '/' . $file;
      }
      

      puis je fais un :
      var_dump($jeu);
      

      J'ai le bon résultat, mais lorsque je passe la commande :
      getFile('menu');
      var_dump($jeu);
      

      Il me retourne :
      "Notice: Undefined variable: jeu in D:\serveur\www\amaury\bootstrap.php on line 13
      NULL"
      La différence est là.
      Merci de me dire où je me suis trompé
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > chabinot Messages postés 391 Statut Membre
         
        bonjour, as-tu déclaré quelque part $jeu comme variable globale? sinon, il me semble normal qu'elle ne soit utilisable que dans la fonction getFile.
        0
  2. chabinot Messages postés 391 Statut Membre 16
     
    Non,
    Comment déclarer une variable globale ?
    Car, j'ai plusieurs tableaux dans plusieurs fichiers php.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      par exemple en ajoutant
      global $jeu;
      dans menu.php.
      0
    2. chabinot Messages postés 391 Statut Membre 16
       
      Merci beaucoup,
      Cela marche maintenant.
      Je mets le sujet en résolu
      0